[英][Symfony + Twig]
我有基本模板(base.html.twig),其中包含動態生成的js的鏈接:
<script type="text/javascript"> <script type="text/javascript" src="{{ path('renderJs') }}"></script> </script>
和Action呈現此JS:
/**
* @Route("/scripts.js",
* name="renderJs")
*/
public function renderJsAction(Request $request)
{
return new Response(
$this->renderView(
"AcmeBundle:Default:renderJs.js.twig",
array('foo' => 'bar')
),
200,
array('Content-Type' => 'text/javascript')
);
}
但是我想使用與基本模板相同的Twig上下文渲染JS(renderJs.js.twig中的變量與base.html.twig中的變量相同)。 那可能嗎? 任何想法如何處理這個問題?
這是一切工作的方式(據我了解):
因此,在這種情況下有兩個請求:一個請求獲取base.html.twig渲染,另一個請求獲取renderJS URL給出的腳本文件。 到服務器收到第二個請求時,第一個請求的上下文已消失。
我可以想到兩個選擇。 選項1是重新生成上下文(理想情況下,通過在兩個地方都設置一些類或方法來進行創建)。 如果您希望對javascript文件有第二個請求(例如是否可以緩存),並且生成上下文不是很耗資源,那很好。
選項2是跳過對操作的需要,並在base.html.twig模板中將render.js.twig模板包括在內嵌javascript中。 如果上下文的創建確實非常昂貴並且javascript很輕並且永遠不會被緩存,那可能只是一個好主意(但是最好讓文件盡可能多地被緩存)。
讓我知道它們的發音以及它們如何適用於您,我可以深入了解更多細節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.