【问题标题】:Symfony2 - Call the same getRepository in all controller actionsSymfony2 - 在所有控制器操作中调用相同的 getRepository
【发布时间】:2013-10-05 03:48:01
【问题描述】:

我在 Symfony2-controller 中使用这样的存储库:

$blog = $em->getRepository('BlogBloggerBundle:BlogData')->getBlogData($id);

在我通过数组将它调用到树枝视图之前。

一切正常,但问题是它构成了一个页脚菜单,然后,我几乎应该在我需要的每个操作中调用它。

我每次需要时如何从“通用”存储库中调用它?

【问题讨论】:

    标签: symfony controller symfony-2.3


    【解决方案1】:

    创建一个视图响应侦听器,注册一个 twig 变量并在其中添加存储库调用...

    ... 或创建一个 twig 扩展,将从存储库接收的数据公开为全局 twig 变量。

    ... 或(我的首选)创建一个专用于呈现页脚的控制器并像这样包含页脚:

    {{ render(controller('Bundle:controller:action')) }}
    

    在 symfony 主页上的 this blog post 中了解更多关于渲染片段的信息。

    【讨论】:

    • 好主意。我正在从存储库加载数据:$brand = $em->getRepository('BloggerBlogBundle:BlogData')->getBlogData($id); return $brand); 我收到此错误:an exception has been thrown during the rendering of a template ("The controller must return a response (Array(0 => Array(0 => Array ....
    • ); 似乎是语法错误不应该是return $brand; 吗?
    • 当您尝试直接返回实体而不是 Response 对象时...您是否将 @View 注释添加到您的控制器...或者您是否有其他控制器响应监听器(即 FOSUserBundle 的)到位了吗? ...否则你需要做这样的事情:return $this->render( 'BloggerBlogBundle:Footer:index.html.twig', array('brand' => $brand) );
    • 非常感谢nifr!!!最后我解决了!我丢失了$this->render( 'Blogger... 部分。有了你的建议,它就完美了!
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 2015-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多