правильный синтаксис для имени маршрута при маршрутизации с аннотациями в параметрах присутствия или URL

Я использую аннотации в контроллере для разрешения URL «/ зарегистрирован»

/**
* @Route("/registered", name="registered_user")
*/
public function registeredAction(){
return $this->render('MyBundle:Default:registered.html.twig');
}

Это работает нормально, без аргументов. Это хорошо работает, когда я называю это «путь», определенный с помощью параметра «имя» в аннотации. Именно я использую его в другом действии того же контроллера:

return $this->redirectToRoute('/registered_user');

Это все хорошо.

Теперь я хотел бы иметь рабочий URL-адрес, такой как «/ registerded / 45», и мне нужно сослаться на него с указанным выше путем. Я думаю что-то вроде:

return $this->redirectToRoute('/registered_user/45');

Я хотел бы использовать аннотации (я знаю, как сделать это под routing_dev.yml и т. Д., Но я хочу сделать это с аннотациями в контроллере).
я пробовал

/**
* @Route("/registered/{id}", name="registered_user/{id}")
*/
public function registeredAction($id){
return $this->render('MyBundle:Default:registered.html.twig');
}

Но это не правильная конфигурация для параметра имени. Я получил :

Unable to generate a URL for the named route "/registered_user/45" as such route does not exist.

Пожалуйста, кто-нибудь может предложить мне правильный синтаксис для параметра имени в аннотации, когда мне нужно передать параметр URL-адреса, как в случае с URL-адресом перенаправления выше?

0

Решение

Вам не нужно добавлять / префикс при генерации URL-адреса.

Кроме того, если у вас возникают проблемы с использованием метода из Symfony, вы всегда можете посмотреть, как он определен и какие аргументы ожидаются.

Чтобы ответить на ваш вопрос, так как вы уже добавили имя в свой маршрут registered_user, чтобы получить URL как /registered/45, вам нужно только отредактировать ваш маршрут и передать необходимые аргументы.

Итак, для этого:

/**
* @Route("/registered/{id}", name="registered_user")
*/

Ваш редирект должен выглядеть так:

return $this->redirectToRoute('registered_user', array(
'id' => 45
));

Копия из Controller.php

/**
* Returns a RedirectResponse to the given route with the given parameters.
*
* @param string $route      The name of the route
* @param array  $parameters An array of parameters
* @param int    $status     The status code to use for the Response
*
* @return RedirectResponse
*/
protected function redirectToRoute($route, array $parameters = array(), $status = 302)
{
return $this->redirect($this->generateUrl($route, $parameters), $status);
}
3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector