Як отримати назву маршруту сторінки перегляду?


16

У моєму користувальницькому оброблювачем подання я хочу переспрямувати на сторінку перегляду 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 - назва режиму перегляду сторінки.
Жан-Люк Барат

Відповіді:


39

Правильне ім'я маршруту для перегляду - 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, fe.

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

3

Вебпрофілер модуля розробки дозволить вам побачити маршрут будь-якої сторінки.

Він також відображає кількість запитів БД, зроблених на сторінці, а також час запиту на додаток до багатьох інших функцій.

Він доступний для 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 не потрібен.
кбріннер

1

Для Durpal 8 ви можете заглянути в таблицю баз даних "маршрутизатора", щоб отримати свої параметри переадресації.

Шукайте відповідне значення у стовпці "ім'я" та порівняйте зі стовпцем шляху.

$from_state->setRedirect('YOUR_DB_VALUE_HERE'); 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.