Php/zend framework/レイアウトメモ
提供: 初心者エンジニアの簡易メモ
レイアウトを使う
application.iniに以下を設定
resources.layout.layoutpath = APPLICATION_PATH "/layouts"
application/Bootstrap.phpに以下を設定
protected function _initViewHelpers() { $this->bootstrap('layout'); $layout = $this->getResource('layout'); $view = $layout->getView(); $view->doctype('XHTML1_STRICT'); $view->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf-8'); $view->headTitle()->setSeparator(' - '); $view->headTitle('Zend Framework Tutorial'); }
application/layouts/layout.phtmlに以下を記述
<?php echo $this->doctype(); ?> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <?php echo $this->headMeta(); ?> <?php echo $this->headTitle(); ?> </head> <body> <div id="content"> <h1><?php echo $this->escape($this->title); ?></h1> <?php echo $this->layout()->content; ?> </div> </body> </html>
アクションに以下のように設定すると代入される
$this->view->title = "My Albums"; $this->view->headTitle($this->view->title, 'PREPEND');
smartyを使ったlayout
- Bootstrap.php
protected function _initLayout() { $options = array( 'layout'=>'layout', 'layoutPath'=> __DIR__ . '/views/layouts', 'viewSuffix' => 'tpl', ); $layout=Zend_Layout::startMvc($options); }
- controllers/TestController.php
public function postDispatch() { $this->_helper->viewRenderer->setNoRender(); $this->view->content = $this->view->render(sprintf('%s/%s.tpl', $this->_request->controller, $this->_request->action)); }
- views/layouts/layout.tpl
<html> <body> {{$content}} </body> </html>