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

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]);
rémy
источник
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
kalidasan
источник
Не нужно использовать Drupal \ Core \ Url - вы используете маршрут правильно, поэтому класс URL не нужен.
kbrinner
1

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

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

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Олли Болли
источник