Puncte:1

Utilizator greșit cu currentUser() pe prod

drapel kn

Primesc numele utilizatorului meu pe care l-am încărcat din profil. Funcționează bine pe localul meu, dar pe produsul meu, prenumele afișat arată numele utilizatorului anterior. Cum pot preveni asta? Așa îmi iau datele.

Aici nu înțeleg, încarc date după utilizatorul actual, dar utilizatorul nu este cel bun...

Am "noul" prenume numai după ce mi-am golit memoria cache a site-ului cu drush

/**
 * Implementează hook_preprocess_HOOK().
 */
funcția fr_menu_link_preprocess_menu__account(&$variabile)
{
    $utilizator_actual = \Drupal::Utilizator curent();
    $variables['firstname'] = FALSE;
    if($utilizator_actual->isAuthenticated()) {
        $entity_manager = \Drupal::entityTypeManager();
        $profileStorage = $entity_manager->getStorage('profil');
        $profileCustomerFound = $profileStorage->loadByProperties([
            'uid' => $current_user->id(),
            'type' => 'client',
            'is_default' => 1,
            'status' => 1,
        ]);
        if($profileCustomerFound > 0) {
            $client = final($profilClientGăsit);
            $prenume = $client->get('field_firstname')->valoare;
            $variables['firstname'] = !empty($firstname) ? ucfirst($prenume) : FALSE;
        }
    }
}
drapel id
Ce vrei să spui prin utilizatorul „anterior”?
Puncte:3
drapel id

Acest lucru este probabil pentru că trebuie să adăugați metadate de stocare în cache așa că Drupal știe să memoreze conținutul separat în funcție de utilizator.

drapel cn
Mențiune obligatorie - variația memoriei cache pe utilizator nu este o idee grozavă, deoarece numărul de intrări în cache poate deveni mare. Constructorii leneși și substituenții pot fi utilizați în acest tip de scenariu. Există o postare bună cu exemple aici: https://www.qed42.com/insights/coe/drupal/lazy-builders-drupal-8-caching-ftw, iar dacă căutați pe acest site [lazy_builder](https:/ /drupal.stackexchange.com/search?q=lazy_builder) există o mulțime de alte exemple și explicații
drapel kn
Site-ul meu are aproximativ 160000 de utilizatori deocamdată, cu numărul „dev” de utilizatori nu am nicio problemă... Deci, pot adăuga metadate de stocare în cache?
drapel kn
Dacă da, cum fac asta?
4uk4 avatar
drapel cn
Dacă aveți această cantitate de utilizatori, adăugați `$variables['#cache'] = ['max-age' => 0];` pentru a preveni ca meniul să fie memorat în cache pentru fiecare utilizator care vizitează pagina. În acest caz, un constructor leneș nu este absolut necesar, deoarece meniurile sunt de obicei redate în blocuri, iar blocurile au deja un generator leneș.
4uk4 avatar
drapel cn
Deși un constructor leneș separat numai pentru $variables['firstname'] ar fi bine. Acest lucru face ca pagina să se încarce mai fluidă atunci când părțile dinamice sunt limitate la minimum absolut. Vedeți https://drupal.stackexchange.com/questions/305479/can-bigpipe-exclude-certain-blocks
drapel kn
`$variables['#cache'] = ['max-age' => 0];` a funcționat bine, mulțumesc!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.