Как узнать название маршрута просмотра страницы?


15

В моем собственном обработчике отправки я хочу перенаправить на страницу просмотра Url, давайте предположим, что мое имя представления - это команда, и его путь /admin/team, я узнаю, что должен использовать, $from_state->setRedirect('route');но когда я попробовал $from_state->setRedirect('/admin/team');Столкнулся с ошибкой, Как я могу получить имя маршрута просмотра?


Это также необходимо для статической конфигурации меню YAML.
vijaycs85

1
Не прямой ответ, но у меня был такой же вопрос со ссылками на пользовательское представление в другом пользовательском модуле, поэтому в меню файла конфигурации: MODULE.links.menu.yml создайте узел с параметром маршрута, route_name: view.YOUR_CUSTOM_MODULE_CONTAINS_CUSTOM_CONTENT_TYPE.page_1если page_1 является именем режима просмотра страницы.
Жан-Люк Барат

Ответы:


38

Правильное имя маршрута для просмотра - view.VIEW_MACHINE_NAME.PAGE_MACHINENAME(другими словами "view.$view_id.$display_id"). попробуйте что-то вроде следующего

use \Drupal\Core\Url;

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

и для вашего случая

$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

Узнайте больше: как сформулировать название маршрута

после комментария @ 4k4, также вы можете перенаправить форму на пользовательский маршрутизатор с URL

просто нужно использовать $form_state->setRedirectUrl($url)


Этот ответ немного неправильный, поскольку вы получаете правильное имя маршрута для представления, поэтому нет необходимости создавать объект URL из этого имени маршрута. Вы должны иметь возможность напрямую использовать имя маршрутизатора: $form_state->setRedirect('view.VIEW_MACHINE_NAME.PAGE_MACHINENAME');
kbrinner

5

Чтобы использовать контекстные фильтры представлений в качестве параметров, используйте arg_X, например.

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

3

Webprofiler модуля devel позволяет увидеть маршрут любой страницы.

Он также отображает количество запросов к БД, сделанных на странице, а также время запроса в дополнение ко многим другим функциям.

Это доступно для Drupal 7 и 8.


2

Простой пример: это будет работать :)

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

Не нужно использовать Drupal \ Core \ Url - вы используете маршрут правильно, поэтому класс URL не нужен.
kbrinner

1

Для Durpal 8 вы также можете заглянуть в таблицу базы данных «маршрутизатор», чтобы получить параметры перенаправления.

Найдите соответствующее значение в столбце «имя» и сравните со столбцом пути.

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.