Puncte:1

Injectarea serviciului într-un alt serviciu nu funcționează

drapel jm

Trebuie să trec peste pagecache serviciu pentru a avea o logică de validare personalizată care să fie executată pentru utilizatorii anonimi. Problema este că am domeniu serviciul modulului domeniu.negociator pentru a fi injectat în pagecache serviciu, dar când sun la domeniu.negociator serviciu este întotdeauna nul Nu conteaza ce fac. Cred că are de-a face cu ceva cu prioritate. Pot confirma că serviciul suprascris este executat.

Cod de suprascris PageCache serviciu

/**
   * {@inheritdoc}
   */
  funcția publică alter(ContainerBuilder $container) {
    // Ignoră clasa language_manager pentru a testa negocierea limbajului de domeniu.
    $definition = $container->getDefinition('http_middleware.page_cache');
    $definition->setClass('Drupal\hcl_login\StackMiddleware\StaticCache')->addArgument(
      noua referinta('domain.negotiator'),
    );
  }

Serviciu anulat

/**
   * {@inheritdoc}
   */
  manevrarea funcției publice(Solicitare $cerere, $tip = self::MASTER_REQUEST, $catch = TRUE): Răspuns {
    $domeniu = \Drupal::service('domeniu.negotiator');
    $x = $this->domainNegotiator->getActiveDomain();
    $currentDomain = \Drupal::service('entity_type.manager')->getStorage('domain')->createHostname();
    $răspuns = parent::handle($cerere, $tip, $catch);
    returnează $răspuns;
  }

4uk4 avatar
drapel cn
Chiar dacă arată ca un serviciu, un middleware nu este un serviciu Drupal, rulează în afara nucleului Drupal.
Jaswin Singh avatar
drapel jm
Mulțumesc, @4k4 pentru răspuns, Există vreo soluție pentru a realiza acest lucru. Inițial, foloseam abonarea la evenimentul KERNAL:: REQUEST pentru a adăuga logica de validare personalizată care trebuie să ruleze pe fiecare pagină pentru utilizatorii anonimi, dar din cauza stocării în cache drupal, Paginile au fost stocate în cache și nu a fost atins.
4uk4 avatar
drapel cn
Soluție pentru ce? Cache-ul paginii este ca un proxy invers, bazat pe adresa URL (inclusiv numele domeniului și șirul de interogare). Dacă acest lucru nu este ceea ce doriți, dezinstalați acest modul și utilizați memoria cache a paginii dinamice.
leymannx avatar
drapel ne
Dar `$request->getHost()` sau `$request->getSchemeAndHttpHost()`?
Jaswin Singh avatar
drapel jm
@leymannx Totuși, aș avea nevoie de serviciu pentru utilizatori pentru a verifica care afișează întotdeauna utilizatori anonimi, am încercat cu un abonat la eveniment, dar când am setat prioritatea la 210, nu pot accesa serviciul.
Jaswin Singh avatar
drapel jm
O altă problemă este că atunci când utilizați abonați la evenimente, paginile sunt stocate în cache și validarea personalizată nu este executată de fiecare dată.

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.