Я хочу создать общий шаблон с верхним и нижним колонтитулом для каждой страницы в /views
используя phalcon вольт двигатель
моя папка иерархия ниже
/views
/user
register.volt
/layouts
header.volt
footer.volt
Я хочу получить оба кода header.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 ожидает, что ваши каталоги шаблонов и партиалов будут относиться к этому каталогу представлений. Это достаточно просто для приложения одного уровня:
$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.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 — это основной макет вашего сайта. Это должно включать верхний и нижний колонтитулы.
Папка Layouts — это папка для ваших контроллеров. Так что, если у вас есть, скажем, loginController, он будет искать login.volt внутри папки раскладок.
Следующим уровнем наследования является вид действия. Итак, после того, как макет контроллера называется, вызывается контроллер вида. В вашем случае index.volt, если ваш контроллер называется RegisterController, а ваше представление — indexAction.