Zend Framework入門(11):
検証機能を含むリッチフォームの作成 - Zend_Form -(前編)
Zend Frameworkによる実践的なPHPアプリケーション開発 11
ダウンロード サンプルファイル (5.2 KB)
Zend_Configを使ったフォームの作成
先程紹介した「Zend_Form とフォーム要素の作成」では、Zend_Formのインスタンスを作成した後、addElementメソッドを利用してフォーム要素を作成・設定・追加していました。しかし、大きなフォームを扱う場合など、このようなコードが長く続くとコード全体の見通しが悪くなります。
そこで、Zend_Formでは設定ファイルを利用してフォームを作成することができます。これには、まずZend_Configで設定を読み込みます。ここでは設定ファイルにXMLファイルを利用した例を見てみます。
まずXMLの設定ファイルを眺めてみます:
<?xml version="1.0"?>
<configdata>
<configTest>
<codezine>
<action>/index/hello</action>
<method>post</method>
<elements>
<user>
...
</user>
<checkHash>
<type>hash</type>
</checkHash>
<submit>
<type>submit</type>
<options>
<label>Submit</label>
</options>
</submit>
</elements>
</codezine>
</configTest>
</configdata>
この設定ファイルではconfigdataがルートとなっており、その子にconfigTestが、孫にcodezineがあります。このうち、まずconfigdataが、この部分がZend_Configに読み込まれるべき設定であることを表しています。次のconfigTestとcodezineは自由につけて良い部分で、configTestが今回利用する設定を、codezineがフォームの設定が書いている場所となっています。これらはそれぞれZend_Config_XmlとZend_Formのコンストラクタに、次のように与えます:
require_once 'Zend/Config/Xml.php';
$config = new Zend_Config_Xml('c:\codezine\zendapps\test.xml',
'configTest');
$form = new Zend_Form($config->codezine);
その後に続くactionとmethodはZend_FormのsetActionとsetMethodに対応するものです。フォーム要素に対応する記述はelementsの下に置きます。ここの下の記述は次のようになります:
<フォーム要素名>
<type>種類</type>
<options>
<label>ラベル</label>
<validators>
<Validator名>
<validator>Validator種類</validator>
<options>
(Validatorのオプション)
</options>
</Validator名>
...
</validators>
<filters>
<Filter名>
<filter>Filter種類</filter>
<options>
(Filterのオプション)
</options>
</Filter名>
...
</filters>
</options>
</フォーム要素名>
これを表示したものは次のようになっています。

Zend_Configには、この他にINI形式で書かれた設定を読み込むためのZend_Config_Iniがあります。こちらの利用方法もZend_Config_Xmlとほぼ同じです:
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('c:\codezine\zendapps\test.ini',
'configTest');
$form = new Zend_Form($config->codezine);
設定ファイルの中身は次のようになります:
[configTest] codezine.action = /index/hello codezine.method = post codezine.elements.user.type = text codezine.elements.user.options.label = Your name codezine.elements.user.options.validators.alnum.validator = alnum codezine.elements.user.options.filtors.StringToLower.filter = StringToLower codezine.elements.user.options.required = true codezine.elements.checkHash.type = hash codezine.elements.submit.type = submit codezine.elements.submit.options.label = Submit
こちらも同様に、まず先頭に設定のセクション名(configTest)を記述します。この後は同様に設定の名前(codezine)以下、XMLの場合と同様に '.' で区切って、階層構造にした設定内容を記述します。
ここでは詳細に触れませんが、Zend_Configは設定を管理するためのモジュールで、XML形式およびINI形式で書いてある設定ファイルを読み込むことができます。なお、例では設定ファイルの位置を絶対パスで指定していますが、パスを省略した場合ではトップレベルのPHPが実行されているディレクトリを探します(この場合は「C:\codezine\htdocs」)。そのため、この場合では相対パス「..\zendapps\test.xml」で指定することもできます。
今回のまとめ
今回はZend_Formの利用方法を一通り触れてみました。次回も引き続きZend_Formについて、フォーム要素をグループ化して扱う方法(Display Groups、Sub Forms)と、Zend_Formの表示を変更する仕組み(Decorator)を中心に、今回紹介できなかったZend_Formの機能について解説する予定です。また、Zend Framework 1.6.0に対応した機能もいくつか紹介できる予定です。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
