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("/")
在每个函数的注释中,如果我删除它,它就会起作用。
有没有办法让控制器/功能直接指向该功能?
谢谢你们
答案 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}
希望它有所帮助!