大家好,我是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}
希望有帮助!