CodeZine(コードジン)

特集ページ一覧

Zend Framework入門(13):
共通レイアウトによるウェブサイトの管理 - Zend_Layout-

Zend Frameworkによる実践的なPHPアプリケーション開発 13

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/12/22 14:00
目次

Zend_Layoutのメソッド

 ここまででZend_Layoutを利用するための基本は押さえたので、ここからはZend_Layoutのメソッドをいくつか紹介したいと思います。

レイアウトの指定

 サンプルで見たように、Zend_Layoutは標準ではレイアウトスクリプトとして「layout.phtml」を利用していました。しかし、例えばエラーが起きたときなど、標準とは異なるレイアウトを利用して描画を行いたい場合があるかもしれません。そのようなときにはsetLayoutメソッドを利用します。

利用するレイアウトの指定に関するメソッド
メソッド名 引数 説明
setLayoutPath $path レイアウトスクリプトを置く場所$pathの指定。標準ではビュースクリプトと同じ場所。
getLayoutPath (なし) レイアウトスクリプトが置いてある場所を取得。
setLayout $name 利用するレイアウトの名前$nameを指定。標準では「layout」。
getLayout (なし) 利用するレイアウトの名前$nameを取得。
setViewSuffix $viewSuffix 利用するレイアウトのファイルの拡張子を指定する。標準では「.phtml」。
getViewSuffix (なし) 利用するレイアウトのファイルの拡張子を取得。

 「layout」の代わりに「table」という名前のレイアウトスクリプトを利用したい場合にはリスト8のようにsetLayoutメソッドを使います。

[リスト8]レイアウトの指定(IndexController.php)
...
class IndexController extends Zend_Controller_Action
{
...
    public function tableAction()
    {
      //レイアウトスクリプトにtable.phtmlを使う
      $this->_helper->layout->setLayout('table');
      //ビュースクリプトは index.phtmlをそのまま利用する
      $this->render('index');
    }
...

 ここでtable.phtmlの内容がリスト9のようだったとします。

[リスト9]代わりのレイアウトスクリプト(table.phtml)
<html>
<head>
 <title>Zend Layout Test</title>
</head>
<body>
 <table border=1>
  <tr>
   <td><?php echo $this->layout()->menu ?></td>
   <td><?php echo $this->layout()->content ?></td>
  </tr>
</body>
</html>

 サンプルではスタイルシートでmenuと本文を配置していたのに対し、リスト9では<table>タグを利用してmenuと本文を配置しています。これを描画した結果は図5のようになります。

図5 table.phtmlで描画した結果
図5 table.phtmlで描画した結果

 図2と違い、図5ではテーブルが利用されています。

Zend_Layoutのメンバ変数の操作

 リスト4やリスト5で見たように、レイアウトスクリプトで利用する変数はZend_Layoutのassignメソッドで設定することができます。これ以外にもZend_Layoutのメンバ変数を設定したり参照したりするメソッドとして、次のものが準備されています。

Zend_Layoutのメンバ変数の操作
メソッド名 引数 説明
__set $key, $value Zend_Layoutのメンバ変数$keyの値を$valueに設定する。
__get $key Zend_Layoutのメンバ変数$keyの値を取得する。
__isset $key Zend_Layoutにメンバ変数$keyがあるかを調べる。
__unset $key Zend_Layoutのメンバ変数$keyを削除する。
assign $spec, $value = null Zend_Layoutのメンバ変数の値を設定する。$specが配列の場合には$specの各要素をについて変数を設定する。それ以外の場合には、$specの名前のメンバ変数の値を$valueにする。

 assignメソッドについては与えられた引数によって挙動が変化します。$specが配列だった場合には$specの各要素について、「要素の鍵」の名前を持つメンバ変数の値を「要素の値」に設定します(リスト10)。

[リスト10]Zend_Layoutのassignメソッド
// 配列を使った場合
$layout->assign(array('a'=>'1', 'b'=>'2', 'c'=>'3');
// これは次と同じ意味
$layout->assign('a', '1');
$layout->assign('b', '2');
$layout->assign('c', '3');

  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2010/11/23 11:57 リスト10に誤りがあったのを修正

バックナンバー

連載:Zend Framework入門

もっと読む

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

  • WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5