SHOEISHA iD

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

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

Zend Framework入門

Zend Framework入門(11):
検証機能を含むリッチフォームの作成 - Zend_Form -(前編)

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

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

Zend_Configを使ったフォームの作成

 先程紹介した「Zend_Form とフォーム要素の作成」では、Zend_Formのインスタンスを作成した後、addElementメソッドを利用してフォーム要素を作成・設定・追加していました。しかし、大きなフォームを扱う場合など、このようなコードが長く続くとコード全体の見通しが悪くなります。

 そこで、Zend_Formでは設定ファイルを利用してフォームを作成することができます。これには、まずZend_Configで設定を読み込みます。ここでは設定ファイルにXMLファイルを利用した例を見てみます。

 まずXMLの設定ファイルを眺めてみます:

フォームのXML設定ファイル(test.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に読み込まれるべき設定であることを表しています。次のconfigTestcodezineは自由につけて良い部分で、configTestが今回利用する設定を、codezineがフォームの設定が書いている場所となっています。これらはそれぞれZend_Config_XmlZend_Formのコンストラクタに、次のように与えます:

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

 その後に続くactionmethodZend_FormsetActionsetMethodに対応するものです。フォーム要素に対応する記述はelementsの下に置きます。ここの下の記述は次のようになります:

フォーム要素のXMLでの記述
<フォーム要素名>
  <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を利用したZend_Formの作成
Zend_Configを利用したZend_Formの作成

 Zend_Configには、この他にINI形式で書かれた設定を読み込むためのZend_Config_Iniがあります。こちらの利用方法もZend_Config_Xmlとほぼ同じです:

Zend_Config_IniによるZend_Formの作成
require_once 'Zend/Config/Ini.php';
$config = new Zend_Config_Ini('c:\codezine\zendapps\test.ini',
                              'configTest');
$form   = new Zend_Form($config->codezine);

 設定ファイルの中身は次のようになります:

フォームのINI設定ファイル(test.ini)
[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

 ここでは詳細に触れませんが、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に対応した機能もいくつか紹介できる予定です。

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

  • 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/3094 2008/10/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング