所以我在我的專案中為存盤在資料庫中的模板創建了一些樹枝加載器。只需讓它們實作 LoaderInterface 就已經自動將它們添加到默認的 Twig\Loader\ChainLoader - 但是,我還沒有找到配置順序的方法。
當我檢查 ChainLoader 中有哪些加載器時,它是
LoaderA -> LoaderB -> FilesystemLoader
,但我希望訂單是
FilesystemLoader -> LoaderB -> LoaderA
如果我在 services.yaml 中定義 twig.loader,它總是以無限遞回結束,并且沒有任何效果。如果我手動配置對 twig.loader.chain 的呼叫,我會得到正確的加載程式順序,然后是鏈加載程式 X,然后是“自動配置”順序的加載程式。Chainloader X 與 Symfony 配置的 ChainLoader 相同,所以......如果找不到模板,則無限遞回。
那么我到底如何告訴 twig 哪些加載器以什么順序加載呢?我需要為這個簡單的要求創建一個 CompilerPass 嗎?
uj5u.com熱心網友回復:
您可以通過手動標記服務來更改順序,如果priority未指定,則默認為0:
# services.yaml
App\Twig\LoaderA:
tags:
- { name: 'twig.loader', priority: 2 }
App\Twig\LoaderB:
tags:
- { name: 'twig.loader', priority: 1 }
如果您愿意,從 Symfony 5.3(在 PHP 8 下運行)開始,您可以使用PHP 屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/425517.html
上一篇:VichUploader與FlySystem集成無法上傳檔案但保存在資料庫中
下一篇:>"Symfony\Component\DependencyInjection\ContainerInterface"自動裝配>別名已棄用。如何在symfony5
