So-net無料ブログ作成
検索選択

Zend Frameworkについて(View編2) [Zend Framework]


Viewについての続き。
マニュアルでは18.4からです。


ヘルパーについて



 HTMLタグや繰り返し処理をいちいち書かなくてもいいように、
 Zend_Viewではヘルパーと呼ばれるテンプレートで使える関数が提供されています。

 Zend_Viewが提供しているヘルパーは、マニュアル参照。

 サンプルとして「formText」ヘルパーを使ってみます。

<?php echo $this->formText('text1', 123, array('size'=>30)) ?>


 これをブラウザで表示した場合、次のHTMLタグが作成されます。

<input type="text" name="text1" id="text1" value="123" size="30" />


 また、この時に表示される値は自動的にエスケープされた値が設定されています。

 Zend_Viewで提供されているヘルパーは主にフォーム要素作成用ですが、
 他のヘルパーが欲しい場合は、独自にヘルパーを作る事が出来ます。

 独自ヘルパーを作るにあたり、ここでも命名規則が存在します。

class View_Helper_xxxx


 このxxxxの部分(クラス名の最後の部分)にヘルパーのメソッド名を指定します。
 さらにファイル名もヘルパーのメソッド名、この場合は「xxxx.php」と名付ける必要があります。
 ちなみに「View_Helper」は自由に変える事が出来ますが、
 独自ヘルパーのクラス名に「View_Helper」を含める事はZendが推奨しています。

 自作ヘルパーは任意の場所に格納する事が出来ます。
 それにはコントローラでViewクラスの「setHelperPath」メソッドを使って、
 格納パスを指定する必要があります。

$view->setHelperPath('[ 格納パス ]', '[ プレフィックス名 ]');


 [ 格納パス ]に自作ヘルパーを格納しているパスを設定します。
 この時、Zend_Viewのヘルパーと同じ場所に格納しても、
 格納パスは指定する必要があるので注意が必要です。

 [ プレフィックス名 ]には独自ヘルパークラスのヘルパー名の前の部分を指定します。
 サンプルの「View_Helper_xxxx」の場合、「View_Helper」がそれになります。

 独自ヘルパーのサンプルとして、リンクタグを作るヘルパーを作ってみます。

 超絶簡単サンプル
 makeLinkTag.php

class View_Helper_makeLinkTag {
 public function makeLinkTag($url, $text=null) {
  if ($text) { $href = "<a href='{$url}'>{$text}</a>"; }
  else { $href = "<a href='{$url}'>{$url}</a>"; }
  return $href;
 }
}


 ここでは$urlに指定されたURLでリンクタグを作成します。
 $textが指定された場合は$textを、指定されなかった場合はURLをリンク名に表示させます。

 コントローラ内のアクションメソッド

$view->setHelperPath('/var/www/zend/application/library/Zend/View/MyHelper', 'View_Helper');


 独自ヘルパーを使うテンプレートを出力する前に設定します。

 テンプレート

<?php echo $this->makeLinkTag('http://www.google.co.jp/', 'Google') ?>


 サンプルを実行することで、独自ヘルパーが動いて以下のHTMLタグが作成されます。

<a href='http://www.google.co.jp/'>Google</a>



Viewは簡単なとこだけでも書くことが多い・・
他のテンプレートエンジンの使い方についてはまた次回。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。

関連リンク

メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。