如果您为每个模块执行真正的捆绑方法,那么完成您尝试做的最简单的方法是使用带有基于属性的路由的 JMS Security-Extra 捆绑。
在您的 composer.json 文件中,添加以下内容: "require": { ... "jms/security-extra-bundle": "1.5.*",
更新您的作曲家文件
php composer.phar update
然后在您的 BundleName/Resources/config/routing.yml 文件中执行以下操作:
some_name:
type: annotation
resource: "@SomeBundle/Controller"
最后,对于控制器中的每个操作,使用 @Route 属性对其进行装饰:
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
/**
* @Route("/SomeBundle/SomeController")
*/
class SomeController extends Controller {
/**
* @Route("someAction", name="myAction")
* @Method("GET") OR
* @Method({"GET", "POST"})
*/
public function someAction() {
}
}
JMS 包中的一些其他属性也使事情变得非常好。例如,我在我的操作中使用了很多 @Template 属性。这意味着我不再需要这样做:
public function recentListAction() {
...
return $this->render(
'AcmeArticleBundle:Article:recentList.html.twig',
array('articles' => $articles)
);
}
我可以简单地做:
/**
* @Route("/Articles/List")
* @Template()
*/
public function recentListAction() {
...
return array('articles' => $articles);
}
只要我有一个 Resources/views/ControllerName/recentList.html.twig 文件,一切都会自动为我编织在一起。