2014-10-08 76 views
0

我已經習慣了ASP.NET MVC,在那裏我可以定義一個剃刀的剖面圖是這樣的:佔位符在爾康

@Html.RenderSection("scripts") 

我通常把這個在我的佈局視圖的底部。這樣一來,我可以像這樣從我的觀點添加腳本,它們將被包括在身,其中的腳本部分定義的底部:

@section scripts { 
    <script> 
     (function() { 
      // do stuff... 
     }()); 
    </script> 
} 

在爾康,我可以在底部把這個我佈局視圖:

$this->assets->outputJs(); 

然後,我可以從我的觀點添加腳本是這樣的:

$this->assets->addJs('js/whatever.js'); 

唯一的缺點這種方法對於這種觀點劇本必須是在一個單獨的文件,這意味着分離請求。我希望能夠將腳本直接添加到視圖中,就像我可以使用剃刀一樣,並且仍然將其呈現在主體的底部。 Phalcon允許你這樣做嗎?

回答

1

是的,你可以使用Partials

<?php $this->partial("partials/js/whatever") ?> 

js/whateverviews/partials/js/whatever.phtml一個PHP模板文件。

您也可以使用Volt模板引擎,做同樣的:

{{ partial('partials/js/whatever') }} 

或使用包括:

{% include "partials/js/whatever" %} 

在伏,你也可以使用[塊] [3]在這裏你可以定義在主模板文件,並在每個視圖文件,你可以定義什麼應該被放在那裏主要佈局(如footer)的部分。

{# templates/base.volt #} 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>My Page</title> 
    </head> 
    <body> 
     <div id="content">{% block content %}{% endblock %}</div> 
     <div id="footer"> 
      {% block footer %}{% endblock %} 
     </div> 
    </body> 
</html> 

,並考慮:

{% extends "templates/base.volt" %} 

{% block content %} 
    <h1>My page</h1> 
{% endblock %} 

{% block footer %}{{ partial('partials/js/whatever') }}{% endblock %} 

嗯,因爲我寫的,這是對於爾康伏模板引擎,但如果你使用純PHP話,我不知道類似的解決方案。您可以創建簡單的服務,收集控制器中模板的鏈接,然後將其作爲主模板中的部分輸出。

+0

如果我添加一個局部的觀點,不會在腳本中出現,而不是放置在機身的底部,我的其他腳本?如果將局部視圖添加到佈局視圖中,那麼我可以確保它位於底部,但它也位於每個頁面上。我想在特定的視圖中定義一個腳本,將腳本放置在主體的底部,但僅限於該視圖。 – 2014-10-09 15:46:35

+0

我在伏純PHP不konw解決方案,但我已經添加了伏的解決方案。 – jodator 2014-10-10 06:11:54