是否可以在单个定义中定义同一控制器的多个路径?
例如:
我想要
的单一定义/, /about, /privacy-policy
使用
之类的东西_home:
pattern: {/ , /about, /privacy-policy}
defaults: { _controller: AcmeDemoBundle:Home:index, about, privacy_policy }
我不想按照建议的here在单独的定义中定义多个路由。
编辑:这是我的源代码:
<?php
namespace Acme\DemoBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class HomeController extends Controller
{
/**
* @Route("/")
*/
public function indexAction()
{
/*
* The action's view can be rendered using render() method
* or @Template annotation as demonstrated in DemoController.
*
*/
return $this->render('AcmeDemoBundle:Home:home.html.tpl');
}
/**
* @Route("/about")
*/
public function aboutAction()
{
return $this->render('AcmeDemoBundle:Home:about.html.tpl');
}
}
这是routing.yml的源代码
_home:
pattern: /
defaults: { _controller: AcmeDemoBundle:Home:index }
_welcome:
pattern: /
defaults: { _controller: AcmeDemoBundle:Welcome:index }
_demo_secured:
resource: "@AcmeDemoBundle/Controller/SecuredController.php"
type: annotation
_demo:
resource: "@AcmeDemoBundle/Controller/DemoController.php"
type: annotation
prefix: /demo
答案 0 :(得分:4)
如果您没有为路线注释声明注释symfony生成一个。 (“使用@Route注释定义的路由被赋予由包名称,控制器名称和操作名称组成的默认名称。”来自http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html)
通过声明多个路由symfony生成一个名称(如果你不精确的名字),巫婆可能会通过保留第一个来覆盖你的其他路线。
您可以尝试通过为注释中的每个路线创建一个随机名称进行测试。
最后一件事是不要忘记你的根路由文件,只需在文档中添加一个链接到你的软件包。
blog:
resource: "@SensioBlogBundle/Controller"
type: annotation
答案 1 :(得分:2)
[语义错误]方法Debril \ RssAtomBundle \ Controller \ YOURController :: indexAction()中的注释“@Template”从未导入过。您是否忘记为此注释添加“使用”语句?
必须在YOURController中添加两个用途:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;