SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend Framework入門

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

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


  • X ポスト
  • このエントリーをはてなブックマークに追加

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');

次のページ
おわりに

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Zend Framework入門連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3339 2010/11/23 11:57

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング