Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Symfony控制器操作设置默认值_Symfony_Controller_Routes - Fatal编程技术网

为Symfony控制器操作设置默认值

为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

我正在尝试学习如何使用Symfony 2.3框架。我认为修改
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/
有效,您必须将
/
也附加到您的路线中!我可以有不止一条路线。现在我明白了。非常感谢!