ビュー(テンプレート)の基本

テンプレートの拡張子を変更する
共通テンプレートを使用する
URLの書き方
DOCTYPEの書き方
タイトルの書き方 <title>〜</title>
外部スタイルシートの書き方

ビューに関するファイルは下記のようになります。

─ application
 ├ configs
 │└ application.ini 設定ファイル
 ├ controllers
 │└ IndexController.php アクションコントローラ
 ├  layouts
 │└ scripts
 │ └ layout.phtml 共通レイアウト
 └ views
  └ scripts
   └ index
    └ index.phtml ページ別レイアウト

テンプレートの拡張子を変更する

標準では、テンプレートファイルの拡張子は『 phtml 』です。
これを『 html 』などに変更する方法です。

設定ファイルで変更する

resources.layout.viewSuffix = "html"

アクションコントローラ内で変更する

$this->_helper->viewRenderer->setViewSuffix('html');

共通テンプレートを使用する

ページ全体のレイアウトを共通化するには、共通テンプレートを作成します。

共通テンプレートの保存先ディレクトリを
/layouts/scripts
とすると、設定ファイルに下記を書くと、共通テンプレートを読むようになります。

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"

デフォルトの共通テンプレートファイル名は『 layout.phtml 』になります。

共通テンプレートの書き方

ページごとのテンプレートを書くには下記のように書きます。

<?php echo $this->layout()->content ?>

具体的には

<html>
<head>
<title>test</title>
</head>
<body>
<p>ヘッダー</p>
<?php echo $this->layout()->content ?>
<p>フッター</p>
</body>
</html>

デフォルトの共通テンプレートファイル名を変更する

設定ファイルで変更する

resources.layout.layout = "test"

アクションコントローラ内で変更する

$this->_helper->layout->setLayout('test');
または
$this->view->layout()->setLayout('test');

共通テンプレートの使用を無効にする

全体では共通テンプレートを使い、一部のページでは使用しない方法です。
アクションコントローラ内で変更する

$this->_helper->layout->disableLayout();
または
$this->view->layout()->disableLayout();

URLの書き方

Zend FrameworkではURLは基本的に相対パスではなく、絶対パスとなります。
たとえば作成したプロジェクトを
http://www.example.com/
から
http://www.example.com/hoge/
に置いたとき、URLをすべて書き直さなくてもすむように、URLをメソッドで記述します。

<?php echo $this->url(array('controller'=>'[コントローラ名]','action'=>'[アクション名]'), 'default', true) ?>

コントローラ名やアクション名を省略すると、indexを使用します。

DOCTYPEの書き方

Zend FrameworkではいくつかのDOCTYPEが用意されています。

定数DOCTYPE
XHTML11XHTML 1.1
XHTML1_STRICTXHTML 1.0 Strict
XHTML1_TRANSITIONALXHTML 1.0 Transitional
XHTML1_FRAMESETXHTML 1.0 Frameset
XHTML_BASIC1XHTML Basic 1.0
HTML4_STRICTHTML 4.01
HTML4_LOOSEHTML 4.01 Transitional
HTML4_FRAMESETHTML 4.01 Frameset
HTML5<!DOCTYPE html>
CUSTOM_XHTML
CUSTOM

HTML5以外はDTDのURLが付きます。

まずはテンプレートで記述する

<?php echo $this->doctype() ?>

コントローラでDOCTYPE仕様を指定する場合

$this->view->doctype('XHTML11');

Bootstrap.phpでDOCTYPE仕様を指定する場合

protected function _initView()
{
    $view = new Zend_View();
    $view->doctype('XHTML11');
}

テンプレートでDOCTYPE仕様を指定する場合

テンプレートに書いてしまうと、そもそもメソッドを使用する意味がなくなります。

<?php echo $this->doctype('XHTML11') ?>

タイトルの書き方 <title>〜</title>

まずはテンプレートで記述する

<?php echo $this->headTitle(); ?>

コントローラでタイトルを指定する場合

$this->view->headTitle('タイトル');

Bootstrap.phpでタイトルを指定する場合

protected function _initView()
{
    $view = new Zend_View();
    $view->headTitle('タイトル');
}

出力は、『タイトル』ではなくて『<title>タイトル</title>』になります。

外部スタイルシートの書き方

URLと同様に外部スタイルシートの記述も絶対パスとなる。

<?php echo $this->headLink()->appendStylesheet('/css/import.css') ?>

関連記事

スポンサーリンク

Raspberry Pi Zero WHのチップ・無線LANアンテナ(大きなチップはCPUではありません)

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る