为Symfony控制器操作设置默认值
我正在尝试学习如何使用Symfony 2.3框架。我认为修改为Symfony控制器操作设置默认值,symfony,controller,routes,Symfony,Controller,Routes,我正在尝试学习如何使用Symfony 2.3框架。我认为修改Acme\DemoBundle\DemoController::helloaction()以在未输入任何名称时提供默认名称是一个不错的第一个练习 这是原件: /** * @Route("/hello/{name}", name="_demo_hello") * @Template() */ public function helloAction($name) { return array('name' => $nam
Acme\DemoBundle\DemoController::helloaction()
以在未输入任何名称时提供默认名称是一个不错的第一个练习
这是原件:
/**
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name)
{
return array('name' => $name);
}
它可以使用像localhost/Symfony/web/demo/hello/SOMENAME
这样的URL,而不能使用像localhost/Symfony/web/demo/hello/SOMENAME/
,localhost/Symfony/web/demo/hello/
和localhost/Symfony/web/demo/hello/
这样的URL
这就是我所做的:
/**
* @Route("/hello", name="_demo_hello", defaults={"name" = "World"})
* @Template()
*/
public function helloAction($name)
{
return array('name' => $name);
}
它与localhost/Symfony/web/demo/hello
一起工作,与localhost/Symfony/web/demo/hello/SOMENAME
一起失败,localhost/Symfony/web/demo/hello/
和localhost/Symfony/web/demo/hello/
如何使路由在有或没有名称以及有或没有尾随斜杠的情况下工作?您可以这样设置默认值:
/**
* @Route("/hello/", defaults={"name" = "John"})
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name) { ... }
同样重要的是要知道,在同一个操作上可以有多个路由,因此无需重复操作
见文件:和:
我认为如果您在路线
/hello
后附加/
,您的解决方案也应该有效。您可以设置如下默认值:
/**
* @Route("/hello/", defaults={"name" = "John"})
* @Route("/hello/{name}", name="_demo_hello")
* @Template()
*/
public function helloAction($name) { ... }
同样重要的是要知道,在同一个操作上可以有多个路由,因此无需重复操作
见文件:和:
我认为,如果您在路线
/hello
之后附加一个/
,解决了默认问题,那么您的解决方案也应该有效。德克萨斯州!也许我读错了手册的版本,但我知道如果占位符在路径中,那么参数是必需的。对尾部斜杠问题有什么想法吗?只是将它添加到我的答案中。您的路线是/hello
,因此,如果您希望/hello/
有效,您必须将/
也附加到您的路线中!我可以有不止一条路线。现在我明白了。非常感谢!ok,修复了默认问题。德克萨斯州!也许我读错了手册的版本,但我知道如果占位符在路径中,那么参数是必需的。对尾部斜杠问题有什么想法吗?只是将它添加到我的答案中。您的路线是/hello
,因此,如果您希望/hello/
有效,您必须将/
也附加到您的路线中!我可以有不止一条路线。现在我明白了。非常感谢!