Symfony路由混乱


Symfony routing confusion

大家好,我是Symfony的新手,所以请原谅我

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

<?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');
    }
}

和我的路由。这个bundle的Yml是这样的

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

和app/config/routing中的路由。Yml是这样的

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

足够简单,它工作得很好......但是我不想添加这个

@Route("/")

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

有没有办法让控制器/函数直接指向那个函数?

谢谢人

如果我理解正确的话,您要求的是一种由控制器和操作名称定义路由的方法,而不是为每个操作指定路由,对吗?

Symfony2没有提供开箱即用的功能,但可以通过第三方捆绑包lswdefaulultroutingbundle实现。

在你安装并启用bundle之后,你就可以设置你的路由了。像这样:

_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}

希望有帮助!