Singurul exemplu din nucleul Drupal pentru o rută dinamică în funcție de datele salvate de utilizator este o Vizualizare cu afișare a paginii și salvarea durează mult timp. Vizualizările necesită rute pentru filtre contextuale. Cu excepția cazului în care aveți un astfel de caz de utilizare specific pentru conținut (vă rugăm să vă editați întrebarea dacă aveți unul), modalitatea corectă ar fi aliasurile. În formularul de editare a nodului puteți adăuga un singur alias, dar puteți adăuga mai multe /admin/config/search/path. Dacă doriți ca într-un singur loc, puteți modifica forma de editare a nodului pentru mai multe aliasuri.
Dacă nu doriți să creați fiecare alias manual și căile au un model, puteți utiliza un procesor de căi. Puteți crea schelele cu drush
drush gen drum-procesor
și puneți modelul regex în metoda inbound:
/modules/custom/mymodule/src/PathProcessor/PathProcessorMymodule.php
<?php
spațiu de nume Drupal\mymodule\PathProcessor;
utilizați Drupal\Core\PathProcessor\InboundPathProcessorInterface;
utilizați Symfony\Component\HttpFoundation\Request;
/**
* Procesor de cale pentru a elimina un prefix.
*/
clasa PathProcessorMymodule implementează InboundPathProcessorInterface {
/**
* {@inheritdoc}
*/
funcția publică proces Intrare($cale, Solicitare $cerere) {
return preg_replace('#^/(autor|sprijinitor)/#', '/', $cale);
}
}
Puteți obține calea originală mai târziu cu
\Drupal::request()->getPathInfo()
sau puteți stoca prefixul într-o proprietate de serviciu înainte de a-l elimina pentru a-l face disponibil la nivel global.
Dacă verificările dvs. produc rezultate randate, adăugați url.cale
contextul cache.