¿Cómo obtener el nombre de ruta de una página de vista?

15

En mi controlador de envío personalizado, quiero redirigir a una URL de la página de vista, supongamos que mi nombre de vista es equipo y su ruta es /admin/team, descubrí que debería usar, $from_state->setRedirect('route');pero cuando intenté $from_state->setRedirect('/admin/team');Faced con error, ¿cómo puedo obtener el nombre de la ruta de vista?

David Mcsmith
fuente
Esto también es necesario para la configuración estática del menú YAML.
vijaycs85
1
No es una respuesta directa, pero tenía la misma pregunta para los enlaces a una vista personalizada en otro módulo personalizado, por lo que en el menú del archivo de configuración: MODULE.links.menu.yml crea un nodo con la opción de ruta route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1si la página_1 es un nombre del modo de vista de página.
Jean-Luc Barat

Respuestas:

38

El nombre de ruta correcto para la vista es view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(en otras palabras "view.$view_id.$display_id"). prueba algo como seguir

use \Drupal\Core\Url;

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

y para tu 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

Más información: cómo formular el nombre de la ruta

después del comentario @ 4k4, también puede redirigir el formulario al enrutador personalizado con URL

solo necesito usar $form_state->setRedirectUrl($url)

Yusef
fuente
Esta respuesta está un poco apagada, ya que está obteniendo el nombre de ruta correcto para la vista, por lo que no es necesario crear un objeto URL a partir de ese nombre de ruta. Debería poder usar el nombre de ruta directamente: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner
5

Para usar filtros contextuales de vistas como parámetros, use arg_X, fe.

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

El Webprofiler del módulo de desarrollo le permite ver la ruta de cualquier página.

También muestra el número de consultas de base de datos realizadas en la página y también el tiempo de solicitud, además de muchas otras características.

Está disponible para Drupal 7 y 8.

Parag
fuente
2

Ejemplo simple: funcionará :)

use Drupal\Core\Url;
$form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME'); // view.my_view.page_1
kalidasan
fuente
No es necesario utilizar Drupal \ Core \ Url: está utilizando la ruta correctamente, por lo que no se necesita la clase URL.
kbrinner
1

Para Durpal 8, también puede consultar la tabla de la base de datos "enrutador" para obtener los parámetros de redireccionamiento.

Busque el valor correspondiente en la columna "nombre" y compárelo con la columna de ruta.

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