gpt4 book ai didi

Symfony2 单 Controller 多路由

转载 作者:行者123 更新时间:2023-12-02 10:19:01 27 4
gpt4 key购买 nike

是否可以在单个定义中定义同一 Controller 的多个路由?

例如:

我想要一个单一的定义

/, /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

最佳答案

如果您没有为路线注释声明名称,symfony 会生成一个。 (“使用 @Route 注解定义的路由会被赋予一个由包名称、 Controller 名称和操作名称组成的默认名称。”来自 http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html)

通过声明多个路由,symfony 会生成一个名称(如果您不精确地指定您的名称),她可能会通过保留第一个来覆盖您的其他路由。

您可以尝试通过为注释中的每条路线随机命名来进行测试。

最后一件事是不要忘记您的根路由文件,通过添加指向您的包的链接(如文档中的示例)。

blog:
resource: "@SensioBlogBundle/Controller"
type: annotation

关于Symfony2 单 Controller 多路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17836318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com