簡體   English   中英

將 Symfony 5 服務渲染為 twig 全局

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM