Puncte:0

Cum să obțineți informații despre nod în RouteSubscriberBase::alterRoutes

drapel jp

ceea ce încerc să obțin este să setez tema de admin pentru unele noduri specifice. Am definit RouteSubscriberBase, dar cum pot obține informații despre nod aici? Acest cod nu funcționează $node = \Drupal::routeMatch()->getParameter('node');

$route->getPath() va reveni /node/{nod}

clasa RouteSubscriber extinde RouteSubscriberBase
{

    /**
     * {@inheritdoc}
     */
    funcția publică alterRoutes(RouteCollection $collection)
    {
        if ($rută = $colecție->get('entity.node.canonical')) {
            $nod = \Drupal::routeMatch()->getParameter('nod');
            // dpm($nod); - aceasta va fi nulă
            dacă ($nid == 123) {
                $route->setOption('_node_operation_route', TRUE);
            }
        }
    }

}

Actualizați: După cum s-a menționat mai jos de @4uk4, RouteSubscriberBase nu este soluția potrivită pentru aceasta. După cum s-a sugerat ThemeNegotiatorInterface face treaba asta. Mulțumesc, @4uk4!

Vikram8888 avatar
drapel in
După cum ați spus, $route->getPath() va returna /node/{node}, folosind funcția explode puteți obține id-ul nodului ca format de matrice, sau încercați în acest fel $entity = \Drupal::routeMatch()- >getParameter('nodul'); if ($entity instance of \Drupal\node\NodeInterface) { // Verificați dacă este un nod $nid = $nod->id(); // Aveți și obiectul nod chiar aici }
sonfd avatar
drapel in
Nu veți putea niciodată să obțineți un ID de nod aici - acest eveniment se va declanșa numai atunci când memoria cache este ștearsă sau când un modul este activat.
4uk4 avatar
drapel cn
Dacă doriți să alegeți o altă temă pentru anumite noduri, aveți nevoie de un negociator de temă personalizat. Vedeți https://drupal.stackexchange.com/questions/281447/themenegotiator-not-working-for-admin-pages

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.