2013-06-05 39 views
0

我在試圖學習如何使用Symfony 2.3框架。我認爲這將是一個很好的第一個練習,修改Acme\DemoBundle\DemoController::helloaction()提供默認名稱,當沒有輸入。設置Symfony控制器動作的默認值

這是原文:

/** 
* @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/hellolocalhost/Symfony/web/demo/hello/

這個網址是我做過什麼:

/** 
* @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/

如何使路由在有和沒有名稱的情況下工作,並且有和沒有結尾斜槓?

回答

3

您可以設置一個默認值是這樣的:

/** 
* @Route("/hello/", defaults={"name" = "John"}) 
* @Route("/hello/{name}", name="_demo_hello") 
* @Template() 
*/ 
public function helloAction($name) { ... } 

同樣重要的是要知道你可以在相同的動作多個路由,所以不需要重複動作。

查看文檔:http://symfony.com/doc/2.2/book/controller.html和:@Route Documentation

我認爲,如果你的路線/hello後追加一個/您的解決方案還應該工作。

+0

確定修復了默認問題。 TX!也許我正在閱讀手冊的錯誤版本,但我明白,如果佔位符在路由中,那麼參數是必需的。 – dnagirl

+0

關於尾部斜線問題的任何想法? – dnagirl

+0

剛剛添加到我的答案。你的路由是'/ hello',所以,如果你想要'/ hello /'工作,你必須將'/'附加到你的路由 – bpoiss