Comment obtenir le nom de l'itinéraire d'une page d'affichage?

15

Dans mon gestionnaire d'envoi personnalisé, je veux rediriger vers une page de visualisation URL, supposons que mon nom de vue soit l' équipe et son chemin d'accès /admin/team, je découvre que je devrais utiliser $from_state->setRedirect('route');mais quand j'ai essayé $from_state->setRedirect('/admin/team');Face à l'erreur, comment puis-je obtenir le nom de la route d'affichage dans?

David Mcsmith
la source
Ceci est également requis pour la configuration du menu YAML statique.
vijaycs85
1
Pas de réponse directe, mais j'avais la même question pour les liens vers une vue personnalisée dans un autre module personnalisé donc dans le menu du fichier de migration: MODULE.links.menu.yml créer un nœud avec l'option de route route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1si page_1 est un nom de mode d'affichage de page.
Jean-Luc Barat

Réponses:

38

Le nom de routage correct pour la vue est view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(dans un autre mot "view.$view_id.$display_id"). essayez quelque chose comme suivre

use \Drupal\Core\Url;

$url = Url::fromRoute('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
$form_state->setRedirectUrl($url);

et pour votre cas

$url = Url::fromRoute('view.team.page_1'); // page_1 is my guess as to your page name, please replace it with your page machine_name

En savoir plus: comment formuler le nom de l'itinéraire

après le commentaire @ 4k4, vous pouvez également rediriger le formulaire vers un routeur personnalisé avec une URL

juste besoin d'utilisation $form_state->setRedirectUrl($url)

Yusef
la source
Cette réponse est un peu décalée, car vous obtenez le nom de routage correct pour la vue, il n'est donc pas nécessaire de créer un objet URL à partir de ce nom de routage. Vous devriez pouvoir utiliser le nom de la route directement: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner
5

Pour utiliser des filtres contextuels de vues comme paramètres, utilisez arg_X, fe.

$url = Url::fromRoute('view.team.page_1', ['arg_0' => 1234]);
rémy
la source
3

Le Webprofiler du module devel vous permet de voir l'itinéraire de n'importe quelle page.

Il affiche également le nombre de requêtes DB effectuées sur la page ainsi que le temps de demande en plus de nombreuses autres fonctionnalités.

Il est disponible pour Drupal 7 et 8.

Parag
la source
2

Exemple simple: cela fonctionnera :)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1
kalidasan
la source
Pas besoin d'utiliser Drupal \ Core \ Url - vous utilisez correctement la route donc la classe URL n'est pas nécessaire.
kbrinner
1

Pour Durpal 8, vous pouvez également consulter la table de base de données "router" pour obtenir vos paramètres de redirection.

Recherchez la valeur correspondante dans la colonne "nom" et comparez-la à la colonne du chemin.

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Olli Bolli
la source