[英]Render Symfony 5 service as twig global
我將服務用作 twig 全局變量。 在服務構造函數中,我設置了屬性$title
的默認值。 它最初可以工作.... Twig 在模板文件中使用命令{{ service.getTitle() }}
呈現屬性值。 但是在通過控制器構造函數更新服務屬性並渲染視圖后,該值不會在屏幕上更新。 目標是由控制器設置一個 twig 全局變量以在所有視圖中呈現。 怎么做?
twig.yaml
twig: globals: pageMap: "@Base.PageMap"
服務.yaml
services: Base.PageMap: class: App\Bundle\Base\Services\PageMap public: true
controller
public function __construct(PageMap $pageMap) { $pageMap->setTitle('Registration listing'); }
twig 模板:
<div class="title">{{ pageMap.getTitle() }}</div>
Twig 全局變量在初始化時設置,並在執行期間編譯/緩存。
如果您想更新並能夠動態調用事物,您應該創建一個 RuntimeExtension(請參閱此處的文檔: https://symfony.com/doc/current/templating/twig_extension.html#creating-lazy-loaded-twig-extensions )
從您的模板中調用它會更昂貴(但更正確!)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.