使用存在的注释或 url 参数路由时路由名称的正确语法
correct syntax for route name when routing with annotations in presence or url parameters
我在控制器中使用注释来解析 url“/registerded”
/**
* @Route("/registered", name="registered_user")
*/
public function registeredAction(){
return $this->render('MyBundle:Default:registered.html.twig');
}
这工作正常,没有参数。当我在注释中将其称为 "path" 并使用 "name" 参数定义时,效果很好。正是我在同一个控制器的另一个动作中使用它:
return $this->redirectToRoute('/registered_user');
这样就可以了
现在我想要一个像“/registerded/45”这样的工作 url,我需要用上面这样的路径名来引用它。我想是这样的:
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 参数时,有人可以建议我注释中名称参数的正确语法吗?
生成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);
}
我在控制器中使用注释来解析 url“/registerded”
/**
* @Route("/registered", name="registered_user")
*/
public function registeredAction(){
return $this->render('MyBundle:Default:registered.html.twig');
}
这工作正常,没有参数。当我在注释中将其称为 "path" 并使用 "name" 参数定义时,效果很好。正是我在同一个控制器的另一个动作中使用它:
return $this->redirectToRoute('/registered_user');
这样就可以了
现在我想要一个像“/registerded/45”这样的工作 url,我需要用上面这样的路径名来引用它。我想是这样的:
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 参数时,有人可以建议我注释中名称参数的正确语法吗?
生成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);
}