在特定情况下覆盖模板和控制器

时间:2014-10-08 07:29:26

标签: symfony override bundle

我有两个捆绑A和B,在B中我需要覆盖A的模板,所以我使用了bundle inheritence。 到目前为止一切运行良好,但现在我只需要在某些特定情况下覆盖包A的模板。我在捆绑B的操作中尝试了这个(它覆盖了捆绑包A的动作):

class ArticleController extends BaseArticleController
{
   public function detailsAction(Request $request, $article)
   {
        if('general' === $article->getType()) {
             // this doesn't return the template of the bundle A :(
             return parent::detailsAction($request, $article);
        }
        // else go on on rendering the other template...
   }

但是无论如何这都会覆盖,即使我的文章类型为'general'

,它也会返回包B的模板

2 个答案:

答案 0 :(得分:0)

做这样的事情:

public function detailsAction(Request $request, $article)
{
    if('general' === $article->getType()) {
         // this doesn't return the template of the bundle A :(
         return parent::detailsAction($request, $article);
    }
    // else go on on rendering the other template...

    return $this->render('YourBundleA:YourControllerA:YourTemplateA.html.twig', array(...));
}

答案 1 :(得分:0)

我发现了“虫子”,我没有正确地指出整个事情:因为我重写了A的控制器,覆盖树枝完全没用,所以我重新命名了束B的枝条这种方式就像一个魅力!