Symfony路由混乱

时间:2014-07-18 21:16:48

标签: php symfony routing

Helo伙计们,我是Symfony noob所以请耐心等待我

我有一个像这样的简单控制器

<?php

namespace Sites\AllBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;

// these import the "@Route" and "@Template" annotations
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;


class SitesController extends Controller
{
    /**
     * @Route("/", name="_all")
     * @Template()
     */
    public function indexAction()
    {       
        return array('name' => 'sssssss');
    }

    /**
     * @Route("/wow",)
     * @Template()
     */
    public function wowAction()
    {       
        return array('wow' => 'sssssss');
    }

}

这个捆绑包的routing.yml就是这样的

_all:
    resource: "@SitesAllBundle/Controller/SitesController.php"
    type:     annotation
    prefix:   /sites

app / config / routing.yml中的路由就像这样

sites_all:
    resource: "@SitesAllBundle/Resources/config/routing.yml"

足够简单,它工作正常......但我不想添加这个

@Route("/")

在每个函数的注释中,如果我删除它,它就会起作用。

有没有办法让控制器/功能直接指向该功能?

谢谢你们

1 个答案:

答案 0 :(得分:1)

如果我正确理解你所要求的是一种让你的路径由控制器和动作名称定义而不必为每个动作指定路线的方法,对吗?

Symfony2并未提供开箱即用的功能,但可以使用第三方软件包LswDefaultRoutingBundle来实现。

安装并启用捆绑包后,您可以像下面这样设置routing.yml:

_all:
    resource: "@SitesAllBundle"
    type:     default
    prefix:   /

然后,如果您使用

调试路线
app/console router:debug

你应该有类似的东西:

[router] Current routes
Name                                                   Method Pattern
sites_allbundle.sites.index                            ANY    /sites/
sites_allbundle.sites.wow                              ANY    /sites/wow

匹配/ {prefix} / {controller} / {action}

希望它有所帮助!