Come ottenere il nome del percorso di una pagina di visualizzazione?


15

Nel mio gestore di invio personalizzato voglio reindirizzare a un URL della pagina di visualizzazione, supponiamo che il mio nome di visualizzazione sia team e il suo percorso sia /admin/team, scopro che dovrei usare $from_state->setRedirect('route');ma quando ho provato di $from_state->setRedirect('/admin/team');fronte a errore, come posso ottenere il nome del percorso di visualizzazione in?


Ciò è necessario anche per la configurazione del menu YAML statico.
vijaycs85,

1
Non una risposta diretta, ma ho avuto la stessa domanda per i collegamenti a una vista personalizzata in un altro modulo personalizzato, quindi nel menu del file di configurazione: MODULE.links.menu.yml crea un nodo con l'opzione route route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1se page_1 è un nome della modalità di visualizzazione della pagina.
Jean-Luc Barat,

Risposte:


38

Il routename corretto per la visualizzazione è view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(in un'altra parola "view.$view_id.$display_id"). prova qualcosa come seguire

use \Drupal\Core\Url;

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

e per il tuo caso

$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

Approfondisci: come formulare il nome del percorso

dopo il commento @ 4k4, puoi anche reindirizzare il modulo al router personalizzato con URL

ho solo bisogno di usare $form_state->setRedirectUrl($url)


Questa risposta è un po 'off, poiché stai ottenendo il routename corretto per la vista, quindi non è necessario creare un oggetto URL da quel routename. Dovresti essere in grado di utilizzare direttamente il routename: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner

5

Per utilizzare i filtri contestuali delle viste come parametri, utilizzare arg_X, fe.

$url = Url::fromRoute('view.team.page_1', ['arg_0' => 1234]);

3

Il Webprofiler del modulo di sviluppo ti consente di vedere il percorso di qualsiasi pagina.

Visualizza anche il numero di query DB effettuate sulla pagina e anche il tempo di richiesta oltre a molte altre funzionalità.

È disponibile per Drupal 7 e 8.


2

Esempio semplice: funzionerà :)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1

Non è necessario utilizzare Drupal \ Core \ Url: stai utilizzando la route correttamente, quindi la classe URL non è necessaria.
Krbrner

1

Per Durpal 8 è possibile esaminare anche la tabella del database "router" per ottenere i parametri di reindirizzamento.

Cerca il valore corrispondente nella colonna "nome" e confronta con la colonna del percorso.

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.