簡體   English   中英

在Phalcon Volt中繼承動態模板

[英]Inherit dynamic template in Phalcon Volt

我需要加載一個頁面,該頁面將被“插入”到模板中-在我閱讀該頁面時,Volt的Template Inheritance應該可以解決問題,並且確實可以。 如示例中所示,硬編碼值可以正常工作-以下示例有效:

<!-- Template -->
<div id="site_content">     
{% block test %}
{% endblock %}
</div>

以及繼承模板的頁面:

{% extends "../../templates/de/index.volt" %}

{% block test %}
    {{ content() }} {# this is a registered volt function that outputs the generated content #}
{% endblock %}

但是,同一頁面可能需要繼承不同的模板,並且必須在運行時確定模板,因此必須動態生成模板的名稱。 我想到了兩個選擇:

  • 將模板名稱設置為變量,並在擴展時使用它-這里的問題是我以后看不到使用它的方法。 那家伙似乎也有同樣的問題 ,但是既沒有答案,也沒有任何可能性的確認。
  • 注冊另一個函數以生成完整的字符串(例如{%擴展“ ../../templates/de/index.volt”%}),然后對其進行編譯,例如

    $ compiler-> addFunction('get_template',函數($ resolvedArgs,$ exprArgs)使用($ volt){返回$ volt-> getCompiler()-> compileString('{%擴展“ ../../templates/de /index.volt“%}');});

然后在頁面中使用該功能,例如

{{ get_template() }}

{% block test %}
    {{ content() }}
{% endblock %}

但是,使用該方法不會解析頁面內容(例如,未顯示已注冊的content()函數返回的內容)。 我也願意接受其他解決方案(對於性能問題,使用Twig代替Volt只是萬不得已),關於我做錯事的建議或有關該主題的有用文章的指南。 提前致謝!

嘗試按照Phalcon文檔中的說明使用部分: 使用部分

暫無
暫無

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

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