[英]How do I create common template with header and footer for phalcon projects with Volt Engine
我想使用Phalcon volt引擎為/views
每個頁面創建一個帶有頁眉和頁腳的通用模板
我的文件夾層次結構如下
/views
/user
register.volt
/layouts
header.volt
footer.volt
我想將header.volt
和footer.volt
代碼footer.volt
放入register.volt
頁面
這是header.volt
的代碼
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
<div class="container-full">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand">Payroll</a>
</div>
<div class="collapse navbar-collapse navbar-right">
<ul class="nav navbar-nav">
<li>item 1</li>
</ul>
</div><!--/.nav-collapse -->
</div>
這是footer.volt
的代碼
<div class="footer">
<div class="container container-full">
© Custom 2014
</div>
</div>
這是register.volt
的代碼
<div class="register-contents">
//register form going here
</div>
在phalcon中設置模板的關鍵是設置視圖目錄的位置。 Phalcon希望您的模板和partials目錄相對於該views目錄。 對於單級應用程序,這足夠簡單:
$view = new \Phalcon\Mvc\View();
$view->setViewsDir( realpath( __DIR__ . '/views/' ) );
$view->setLayoutsDir( '/layouts/' );
$view->setPartialsDir( '/partials/' );
當您要有一個共享模板目錄和每個模塊單獨的視圖目錄時,在多模塊設置中會遇到麻煩。
$view = new \Phalcon\Mvc\View();
$view->setViewsDir( realpath( __DIR__ . '/views/' ) );
$view->setLayoutsDir( '../../../common/views/layouts/' );
$view->setPartialsDir( '../../../common/views/partials/' );
在布局目錄中,創建您的主模板:
{{ getDoctype() }}
<html>
{{ partial('head') }}
<body>
{{ partial('navigation') }}
{{ flash.output() }}
{{ get_content() }}
{{ partial('footer') }}
</body>
</html>
在您的partials目錄中,放置您的head,navigation和footer文件:
head.volt
<head>
{{ tag.getTitle() }}
{{ assets.outputCss() }}
{{ assets.outputJs() }}
</head>
navigation.php
<?php
// get list of navigation elements from model
$navigation = \MyNamespace\Navigation::getNavElements();
echo "<ul class='nav'>\n";
forEach( $navigation as $element ){
printf("\t<li><a href='%s'>%s</a></li>\n",$element['url'],$element['display']);
}
echo "</ul>\n";
footer.volt
<div class='footer'>
<p>© {{ date('Y') }} Your Company</p>
</div>
您還可以在頁面內容之前或之后插入包含html代碼段的其他模板。 使用beforeRender()和afterRender()掛鈎控制模板目錄中的哪些文件插入到哪里。
我強烈建議您閱讀以下有關phalcon的文檔: http ://docs.phalconphp.com/en/latest/reference/views.html
但是,您的文件夾結構應類似於以下內容:
/views
index.volt
/layouts
register.volt
/register
index.volt
其中views / index.volt是您網站的主要布局。 這應該包括頁眉和頁腳。
布局文件夾是您的控制器的布局文件夾。 因此,如果您有loginController,那么它將在布局文件夾中搜索login.volt。
繼承的下一級是操作視圖。 因此,在調用控制器的布局之后,將調用視圖控制器。 在本例中,如果您是控制器,則index.volt名為RegisterController,而您的視圖為indexAction。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.