我在控制器中使用注释来解析url "/registered "
/**
* @Route("/registered", name="registered_user")
*/
public function registeredAction(){
return $this->render('MyBundle:Default:registered.html.twig');
}
如果没有参数,可以正常工作。当我在注释中用"name"参数定义它为"path"时,它工作得很好。我在同一个控制器的另一个动作中使用它:
return $this->redirectToRoute('/registered_user');
一切都好。
现在我想有一个像"/registered/45"这样的工作url,我需要用上面的路径名来引用它。我想是这样的:
return $this->redirectToRoute('/registered_user/45');
我想使用注释(我知道如何使它在routing_dev。但我想在控制器中使用注释)。我试着
/**
* @Route("/registered/{id}", name="registered_user/{id}")
*/
public function registeredAction($id){
return $this->render('MyBundle:Default:registered.html.twig');
}
但是这不是name参数的正确配置。我收到:
Unable to generate a URL for the named route "/registered_user/45" as such route does not exist.
请有人可以建议我正确的语法名称参数在注释当我需要传递一个url参数与上面的重定向url ?
生成url地址时不需要添加/
前缀
同样,如果你在使用Symfony中的方法时遇到麻烦,你可以查看它是如何定义的,以及参数期望什么。
回答你的问题,因为你已经给你的路由registered_user
添加了名称,为了得到像/registered/45
这样的URL,你只需要编辑你的路由路径,并传递所需的参数。
那么,对于这个:
/**
* @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);
}