簡體   English   中英

Symfony2 / Twig:如何強制重新渲染單個模板?

[英]Symfony2 / Twig: How to force rerender of single template?

我有一個Symfony項目,該項目還會發送一些標准電子郵件,例如“尊敬的XYZ用戶,請找到附件”等。-這些電子郵件的內容存儲在Twig模板中,例如yourfile.html.twig。 管理員可以在簡單的Web界面中更改那些基本上是“文本文件”的功能。 任何更改都將寫回到文件中。 電子郵件是通過SwiftMailer發送的,就像在文檔中的示例代碼中一樣,帶有樹枝模板的文件路徑。

這在調試環境中可以正常工作-因為Twig自動重新釋放已更改的緩存文件。 但是,當我處於生產環境中時,它將不再起作用。 Twig無法識別對郵件模板所做的更改,它使用緩存的版本(因此,用戶會收到一封包含舊版本文本的電子郵件)。

解決此問題的一種方法是,每當管理員更改電子郵件模板時就清除緩存(這種情況不會經常發生)。 無論如何,我不喜歡這種方式,因為它會強制重新渲染每個頁面,這只是浪費資源...

另一種可能性是在生產環境中也啟用Twig的“自動重新渲染”功能,但我對此解決方案不滿意,因為它會導致性能下降。

做到這一點的“最佳”方法是調用某些函數以僅重新渲染已更改的一個文件(偽代碼:twig-> rerender(“ path / to / file / yourfile.html.twig”)),但是我無法找到任何方法來完成此任務。 也許我只是使用了錯誤的關鍵字進行搜索?

如果有人對如何解決上述問題有任何想法,我將不勝感激!

在此先感謝,katze_sonne

您可以將信件的文本存儲在數據庫中。 例如,在樹枝中,您只有{{letter}} 您的問題將消失。 我認為這種方式更有用。 而且您不需要重寫項目文件夾中的文件,在服務器上可能會出現一些問題。

您可以從命令發送電子郵件的另一種形式。 命令始終在開發環境中執行,因此它將獲得文件的非緩存副本。 如果從控制器發送信件,則可以使用如何從控制器運行symfony 2 run命令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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