【问题标题】:Symfony2 organize code used for ever page requestSymfony2 组织用于页面请求的代码
【发布时间】:2023-04-07 19:21:01
【问题描述】:

我正在用 symfony2 编写我的第一个站点,该站点包含一些用于处理文章和静态页面或联系页面的捆绑包。我还创建了一个捆绑包(现在仅后端)用于处理要在网站上显示的广告,但是这个广告必须在任何前端页面请求中显示,所以我需要了解如何执行必要的代码来检索广告在我的捆绑包中的所有前端控制器上显示和传递此信息。

你能帮帮我吗?

提前致谢 罗伯特

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    取决于您将广告放在哪里,但听起来像是 service container 的工作。

    基本上,您需要编写一个服务来实现获取所需广告的方法,然后在控制器中调用该服务 ($this->get('service_name'))

    【讨论】:

    • 感谢您的回答。广告只是一个例子,我可以有广告、多级菜单、某种跟踪,如谷歌分析。如果我使用服务,在任何控制器中我必须获得适当的服务并使用它,如果我以后想更改此逻辑中的某些内容,我必须更改任何控制器中的相关代码,这违反了干燥规则。我只需要一个设置页面广告、菜单等的地方,然后是只设置页面内容的正确控制器。
    • 我试图更好地解释自己:就像我有一个所有前端页面通用的 base.html.twig 一样,我需要一个所有前端页面通用的基本控制器。
    • 等等,为什么更改服务中的逻辑会导致您更改所有控制器中的代码?您有一个服务可以为您完成所有获取/菜单生成/分析获取/任何工作,而在 Controller 中您所做的就是调用它。因此,如果某些部分的逻辑必须更改,它在单个服务中
    • 另外,如果你需要一个“基础”控制器,你可以直接编写它,在其中包含所需的代码,然后与其他人一起扩展?
    • 更改服务中的逻辑不会更改所有控制器中的代码,但如果我需要在所有页面中添加另一个公共对象,我需要将其添加到所有控制器中。
    【解决方案2】:

    请参阅在 twig 模板中嵌入控制器。 http://symfony.com/doc/current/book/templating.html#embedding-controllers

    基本上,如果你想包含一个全局小部件,你必须将它添加到你的控制器模板继承的父树枝模板中。

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多