gpt4 book ai didi

php - 扩展 Twig 的 AppVariable

转载 作者:行者123 更新时间:2023-12-03 23:00:22 25 4
gpt4 key购买 nike

我继承了一个使用 Symfony 2 的网站。

该站点运行良好,直到我运行 composer 来升级软件包。它将 Symfony 2.6 升级到 2.7.1,将 Twig 1.18 升级到 1.18.2。

我现在收到以下错误:

Method "site" for object "Symfony\Bridge\Twig\AppVariable" does not exist in @Page/Page/homepage.html.twig at line 21



有问题的 Twig 文件有这样的调用:
{{ app.site.name }}

现在显然 site不是 AppVariable 的成员类型。我无法弄清楚原始开发人员如何设法扩展 Twig 的 app全局新成员。我真的不知道在哪里看。我对 Symfony 并不过分胜任。

最佳答案

引用 Artamiels answer作为起点。

看起来像 sf3,AppVariable类不再需要容器(并且没有 parent::__construct ),但是直接设置了有趣的变量。

所以,我确实设置了我的class MyAppExtension extends AppVariableservices.yml 中使用此设置:

extended_twig_app:
class: AppBundle\Twig\MyAppExtension
public: false
calls:
- [setEnvironment, ["%kernel.environment%"]]
- [setDebug, ["%kernel.debug%"]]
- [setTokenStorage, ['@security.token_storage']]
- [setRequestStack, ['@request_stack']]

这基本上是 Twig Bundle 中对应代码的 xml->yml 转换:
https://github.com/symfony/twig-bundle/blob/master/Resources/config/twig.xml
    <service id="twig.app_variable" class="Symfony\Bridge\Twig\AppVariable" public="false">
<call method="setEnvironment"><argument>%kernel.environment%</argument></call>
<call method="setDebug"><argument>%kernel.debug%</argument></call>
<call method="setTokenStorage"><argument type="service" id="security.token_storage" on-invalid="ignore" /></call>
<call method="setRequestStack"><argument type="service" id="request_stack" on-invalid="ignore" /></call>
</service>

关于php - 扩展 Twig 的 AppVariable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30930682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com