Рейтинг:1

Как я могу получить информацию об URL-адресе текущего запроса?

флаг us

Мне нужна помощь в поиске способа получить текущий URL-адрес запроса в контроллере и на его основе изменить имя веб-формы в контроллере.

Мой код:

'#url' => Url::fromRoute('entity.webform.canonical',['webform' => 'form1'])

В этой строке кода, как я могу переключаться между форма1 или же форма2 на основе того, содержит ли URL-адрес запроса определенный путь?

Рейтинг:3
флаг cn

Мне нужна помощь в поиске способа получить текущий URL-адрес запроса в контроллер

В контроллере получите запрос с аргументом типа Запрос $запрос:

<?php

пространство имен Drupal\mymodule\Controller;

используйте Drupal\Core\Controller\ControllerBase;
используйте Symfony\Component\HttpFoundation\Request;
используйте Drupal\Core\Url;

класс ExampleController расширяет ControllerBase {

  /**
   * Контроллер для возврата ссылки на веб-форму.
   */
  действие публичной функции (запрос $ request) {

    // вычислить $webform с помощью $request->getPathInfo()

    возвращаться [
      '#тип' => 'ссылка',
      '#title' => 'Фу',
      '#url' => Url::fromRoute('entity.webform.canonical', ['webform' => $webform]),
      '#cache' => ['contexts' => ['url.path']],
    ];
  }

}

Вы можете получить другую информацию из запроса, но тогда вам нужно настроить контекст(ы) кеша. См. например https://drupal.stackexchange.com/a/245597/47547

leymannx avatar
флаг ne
Вам не нужно вводить его?
4uk4 avatar
флаг cn
Нет, это самое простое использование контроллера, получающего запрос и возвращающего ответ.
Рейтинг:1
флаг cn

Информация об URL доступна из request_stack оказание услуг. В процедурном коде получение URL выглядит так:

$url = \Drupal::request()->getRequestUri();

Также есть помощник для получения параметров запроса, если они вам нужны, например.

if (!empty(\Drupal::request()->query->get('foo'))) {
  
}

В вашем случае вы должны ввести request_stack сервис в ваш контроллери получить объект запроса из его получить текущий запрос () метод (а не получать его из \Друпал::запрос() напрямую).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.