HTML_QuickForm

PEAR::HTML_QuickForm パッケージは、HTML フォームの生成、検証および処理を行うメソッドを提供します。

イントロダクション

目次
クイックスタートガイド -- HTML_QuickForm チュートリアル
クイックヘルプ -- よくある質問への回答
QuickForm の要素型 -- QuickForm に追加できる要素
バージョン 3.2 への移行 -- API の注意すべき変更点
サブパッケージ -- QuickForm のサブパッケージおよび QuickForm を使用しているパッケージの概要

HTML_QuickForm は、HTML フォームを便利に扱うためのライブラリです。 Javascript もしくはサーバサイドでの検証を行えますし、 いろいろな方法でカスタマイズや拡張が可能です。 HTML_QuickForm は、複数のファイルから構成されています。 中心となるファイルは、pear/HTML ディレクトリにインストールされた QuickForm.php です。 他に重要なファイルとしては、フォーム要素に関連したメソッドが記述された element.php ファイルや、要素グループを扱うメソッドが書かれた group.php ファイルが挙げられます。どちらも、他のオブジェクトと同様に、 HTML/QuickForm ディレクトリにあります。 input.php には、(text, password 等の) 入力可能なタイプのすべての要素の 共通クラスが記述されています。HTML_QuickForm には、select, text, password, checkbox, file, submit, reset, button, image, radio, hidden, textarea といった 標準的なフォーム要素のそれぞれに対応するオブジェクトが定義されています。 さらに、APIを合致させれば、独自の要素を作ることも可能です。

基本的なフォームの生成

目次
コンストラクタ HTML_QuickForm::HTML_QuickForm() -- クラスのコンストラクタ
HTML_QuickForm::addElement() -- フォームへ要素を追加する
HTML_QuickForm::apiVersion() -- 現在の API のバージョンを返す
HTML_QuickForm::createElement() -- 与えられた種類の要素をフォームに作成する
HTML_QuickForm::elementExists() -- フォームに要素があるか調べる
HTML_QuickForm::errorMessage() -- エラーコードからエラーメッセージを返す
HTML_QuickForm::getElementType() -- 与えられた要素の種類を返す
HTML_QuickForm::getElement() -- 要素へのリファレンスを返す
HTML_QuickForm::getMaxFileSize() -- MAX_FILE_SIZE 隠し要素の値を返す
HTML_QuickForm::getRegisteredTypes() -- 登録済みの要素の種類を返す
HTML_QuickForm::insertElementBefore() -- 新しい要素を、他の要素の直前に挿入する
HTML_QuickForm::isError() -- 結果がエラーかどうか知らせる
HTML_QuickForm::isTypeRegistered() -- フォーム要素の種類をサポートするか調べる
HTML_QuickForm::registerElementType() -- 新規要素タイプを登録する
HTML_QuickForm::removeElement() -- 要素の削除
HTML_QuickForm::setMaxFileSize() -- MAX_FILE_SIZE 隠し要素の値を設定する
HTML_QuickForm::updateElementAttr() -- ひとつまたは複数の要素の属性を更新する

To be written.

フォーム要素を表現したクラス群

To be written

基本クラス群

目次
HTML_QuickForm_element クラス概要 -- フォーム要素の基底クラス
コンストラクタ HTML_QuickForm_element() -- クラスのコンストラクタ
HTML_QuickForm_element::accept() -- レンダラを受け入れる
HTML_QuickForm_element::apiVersion() -- API のバージョンを返す
HTML_QuickForm_element::exportValue() -- '安全な' 要素の値を返す (パッケージ開発者用)
HTML_QuickForm_element::freeze() -- 要素を凍結する
HTML_QuickForm_element::getFrozenHtml() -- HTML タグを含めずにフィールドの値を返す
HTML_QuickForm_element::getLabel() -- 要素のラベルを返す
HTML_QuickForm_element::getName() -- 要素の名前を返す
HTML_QuickForm_element::getType() -- 要素の型を返す
HTML_QuickForm_element::getValue() -- フォーム要素の値を返す
HTML_QuickForm_element::isFrozen() -- 要素が凍結されているかどうかを返す
HTML_QuickForm_element::onQuickFormEvent() --  この要素上でフォームイベントが発生した際に HTML_QuickForm からコールされる (パッケージ開発者用)
HTML_QuickForm_element::setLabel() -- 要素のラベルを設定する
HTML_QuickForm_element::setName() -- 入力フィールドの名前を設定する
HTML_QuickForm_element::setPersistantFreeze() -- freeze() の際に要素の値を持続させるかどうかを設定する
HTML_QuickForm_element::setValue() -- フォーム要素の値を設定する
HTML_QuickForm_element::unfreeze() -- 要素の凍結を解除する
HTML_QuickForm_input クラス概要 -- フォームの入力要素のための基底クラス
コンストラクタ HTML_QuickForm_input() -- クラスのコンストラクタ
HTML_QuickForm_input::setType() -- 要素の型を設定する

標準的 HTML 要素

目次
HTML_QuickForm_button クラス概要 -- button 型の要素のための HTML クラス
コンストラクタ HTML_QuickForm_button() -- クラスのコンストラクタ
HTML_QuickForm_checkbox クラス概要 -- checkbox 型のフィールドのための HTML クラス
コンストラクタ HTML_QuickForm_checkbox() -- クラスのコンストラクタ
HTML_QuickForm_checkbox::getChecked() -- チェックボックスがチェックされているかどうかを返す
HTML_QuickForm_checkbox::getText() -- チェックボックスのテキストを返す
HTML_QuickForm_checkbox::setChecked() -- チェックボックスがチェックされているかどうかを設定する
HTML_QuickForm_checkbox::setText() -- チェックボックスのテキストを設定する
HTML_QuickForm_file クラス概要 -- file 型の要素のための HTML クラス
コンストラクタ HTML_QuickForm_file() -- クラスのコンストラクタ
HTML_QuickForm_file::getSize() -- file 要素のサイズを返す
HTML_QuickForm_file::getValue() -- アップロードされたファイルの情報を返す
HTML_QuickForm_file::isUploadedFile() -- アップロードされたファイルが要素に含まれているかどうかを調べる
HTML_QuickForm_file::moveUploadedFile() -- アップロードされたファイルを移動する
HTML_QuickForm_file::setSize() -- file 要素のサイズを設定する
HTML_QuickForm_hidden クラス概要 -- hidden 型の要素のための HTML クラス
コンストラクタ HTML_QuickForm_hidden() -- クラスのコンストラクタ
HTML_QuickForm_image クラス概要 -- image 型の要素のための HTML クラス
コンストラクタ HTML_QuickForm_image() -- クラスのコンストラクタ
HTML_QuickForm_image::setAlign() -- image 要素の配置を設定する
HTML_QuickForm_image::setBorder() -- image 要素の枠線のサイズを設定する
HTML_QuickForm_image::setSource() -- image 要素のソースを設定する
HTML_QuickForm_password クラス概要 -- password 型のフィールドのための HTML クラス
コンストラクタ HTML_QuickForm_password() -- クラスのコンストラクタ
HTML_QuickForm_password::setMaxlength() -- password 要素の maxlength を設定する
HTML_QuickForm_password::setSize() -- password 要素のサイズを設定する
HTML_QuickForm_radio クラス概要 -- radio 型の要素のための HTML クラス
コンストラクタ HTML_QuickForm_radio() -- クラスのコンストラクタ
HTML_QuickForm_radio::getChecked() -- ラジオボタンがチェックされているかどうかを返す
HTML_QuickForm_radio::getText() -- ラジオボタンのテキストを返す
HTML_QuickForm_radio::setChecked() -- ラジオボタンがチェックされているかどうかを設定する
HTML_QuickForm_radio::setText() -- ラジオボタンのテキストを設定する
HTML_QuickForm_reset クラス概要 -- reset 型の要素のための HTML クラス
コンストラクタ HTML_QuickForm_reset() -- クラスのコンストラクタ
HTML_QuickForm_select クラス概要 -- HTML SELECT を動的に作成するためのクラス
コンストラクタ HTML_QuickForm_select() -- クラスのコンストラクタ
HTML_QuickForm_select::addOption() -- SELECT に新しい OPTION を追加する
HTML_QuickForm_select::getMultiple() -- select の mutiple 属性を返す
HTML_QuickForm_select::getPrivateName() -- 要素名を返す (角括弧が追加される可能性あり)
HTML_QuickForm_select::getSelected() -- 選択された値の配列を返す
HTML_QuickForm_select::getSize() -- select フィールドのサイズを返す
HTML_QuickForm_select::load() -- さまざまな型のデータソースから選択肢を読み込む
HTML_QuickForm_select::loadArray() -- 連想配列から選択肢を読み込む
HTML_QuickForm_select::loadDbResult() -- DB_result オブジェクトから選択肢を読み込む
HTML_QuickForm_select::loadQuery() -- データベースに問い合わせ、その結果から選択肢を読み込む
HTML_QuickForm_select::setMultiple() -- select の mutiple 属性を設定する
HTML_QuickForm_select::setSelected() -- セレクトボックスのデフォルト値を設定する
HTML_QuickForm_select::setSize() --  select フィールドのサイズを設定する ('multiple' select についてのみ適用される)
HTML_QuickForm_submit クラス概要 -- submit 型の要素のための HTML クラス
コンストラクタ HTML_QuickForm_submit() -- クラスのコンストラクタ
HTML_QuickForm_text クラス概要 -- テキストフィールドのための HTML クラス
コンストラクタ HTML_QuickForm_text -- クラスのコンストラクタ
HTML_QuickForm_text::setMaxlength() -- テキストフィールドの最大長を設定する
HTML_QuickForm_text::setSize() -- テキストフィールドのサイズを設定する
HTML_QuickForm_textarea クラス概要 -- textarea 型のフィールドのための HTML クラス
コンストラクタ HTML_QuickForm_textarea() -- クラスのコンストラクタ
HTML_QuickForm_textarea::setCols() -- textarea 要素の幅を列数で設定する
HTML_QuickForm_textarea::setRows() -- textarea 要素の高さを行数で設定する
HTML_QuickForm_textarea::setWrap() -- textarea 要素の自動改行の方式を設定する
HTML_QuickForm_xbutton クラス概要 -- HTML 4.0 <button> 要素のためのクラス
コンストラクタ HTML_QuickForm_xbutton() -- クラスのコンストラクタ
HTML_QuickForm_xbutton::setContent() -- 要素の内容を設定する

カスタム要素

目次
HTML_QuickForm_advcheckbox クラス概要 -- アドバンスドチェックボックス型のフィールドのための HTML クラス
コンストラクタ HTML_QuickForm_advcheckbox() -- クラスのコンストラクタ
HTML_QuickForm_advcheckbox::getOnclickJs() -- onclick イベント用の javascript を作成する
HTML_QuickForm_advcheckbox::getPrivateName() -- 要素のプライベート名を取得する
HTML_QuickForm_advcheckbox::setValues() -- hidden 要素で使用する値を設定する
HTML_QuickForm_autocomplete クラス概要 -- 自動補完機能つきのテキストフィールドのための HTML クラス
コンストラクタ HTML_QuickForm_autocomplete -- クラスのコンストラクタ
HTML_QuickForm_autocomplete::setoptions() -- テキスト入力要素の自動補完のためのオプションを設定する
HTML_QuickForm_date クラス概要 -- 日付 (および時刻) の入力に使用する要素グループのためのクラス
コンストラクタ HTML_QuickForm_date() -- クラスのコンストラクタ
HTML_QuickForm_header クラス概要 -- フォームにヘッダを追加する際に使用する擬似要素
コンストラクタ HTML_QuickForm_header() -- クラスのコンストラクタ
HTML_QuickForm_hiddenselect クラス概要 -- select の値を保持する hidden 要素を作成する
コンストラクタ HTML_QuickForm_hiddenselect() -- クラスのコンストラクタ
HTML_QuickForm_hierselect クラス概要 --  連結した HTML Select 要素を動的に作成するためのクラスで、 各要素の選択によって次の要素の内容が変化する
コンストラクタ HTML_QuickForm_hierselect() -- クラスのコンストラクタ
HTML_QuickForm_hierselect::setOptions() -- select 要素の選択肢を設定する
HTML_QuickForm_hierselect::setMainOptions() -- 非推奨: 最初の select のオプションを設定する
HTML_QuickForm_hierselect::setSecOptions() -- 非推奨: 2 番目の select のオプションを設定する
HTML_QuickForm_html クラス概要 -- フォームに生の HTML を追加するために使用する擬似要素 (廃止予定)
コンストラクタ HTML_QuickForm_html() -- クラスのコンストラクタ
HTML_QuickForm_link クラス概要 -- link 型のフィールドのための HTML クラス
コンストラクタ HTML_QuickForm_link() -- クラスのコンストラクタ
HTML_QuickForm_link::setHref() -- リンク先を設定する
HTML_QuickForm_static クラス概要 -- 静的なデータのための HTML クラス
コンストラクタ HTML_QuickForm_static() -- クラスのコンストラクタ
HTML_QuickForm_static::setText() -- テキストを設定する

グループの使用

目次
HTML_QuickForm::addGroup() -- 要素グループを追加する
HTML_QuickForm_group クラス概要 -- フォーム要素のグループのための HTML クラス
コンストラクタ HTML_QuickForm_group() -- クラスのコンストラクタ
HTML_QuickForm_group::getElementName() -- グループ内の要素の名前を返す
HTML_QuickForm_group::getElements() -- グループ化された要素を取得する
HTML_QuickForm_group::getGroupType() -- その要素に基づいたグループ型を取得する
HTML_QuickForm_group::setElements() -- グループ化される要素を設定する

To be written.

要素値の処理

各要素の値を管理し、入力された値を処理するメソッドです。

要素値の取得、設定および処理

目次
HTML_QuickForm::setConstants() -- フォームの定数値を設定する
HTML_QuickForm::setDefaults() -- フォームのデフォルト値を設定する
HTML_QuickForm::isSubmitted() -- フォームが既に送信済みかどうかを返す
HTML_QuickForm::exportValue() -- 要素の "安全な" 値を返す
HTML_QuickForm::exportValues() -- 要素の "安全な" 値を返す
HTML_QuickForm::getElementValue() -- 要素の生の値を返す
HTML_QuickForm::getSubmitValue() -- 送信された要素の値を返す
HTML_QuickForm::getSubmitValues() -- フォームから送信された値を返す
HTML_QuickForm::process() -- フォームデータの処理を実行する

検証およびフィルタ

目次
導入 - 検証およびフィルタ -- 送信されたデータを処理する方法
HTML_QuickForm::addRule() -- 指定したフィールドに検証規則を追加する
HTML_QuickForm::addGroupRule() -- 指定したグループの検証規則を追加する
HTML_QuickForm::addFormRule() -- 全体的な検証規則を追加する
HTML_QuickForm::isElementRequired() -- フォーム要素が必須項目かどうかを返す
HTML_QuickForm::validate() -- サーバ側での検証を行う
HTML_QuickForm::getElementError() -- 検証された要素に対応するエラーを返す
HTML_QuickForm::setElementError() -- フォーム要素のエラーメッセージを設定する
HTML_QuickForm::registerRule() -- 新しい検証規則を登録する
HTML_QuickForm::getRegisteredRules() -- 登録された検証規則を返す
HTML_QuickForm::isRuleRegistered() -- 規則がサポートされているかどうかを返す
HTML_QuickForm::applyFilter() -- 指定したフィールドにフィルタを適用する

HTML_QuickForm は、「検証ルール」をサポートしています。 自らの検証ルールを書き、QuickForm に登録した後、自身のスクリプトからコールします。 デフォルトでは、正規表現による検証(preg_match 形式) が、検証が要求された要素についてのみ行われます。 また、クライアント側での検証を行いたい場合は、必要な javascript コードが生成されます。 サーバ側での検証は(デフォルトでは)常に行われます。

フォームへのデータのインポートや、送信されたフォームの処理に際して、フィルタを利用することができます。 フィルタは、時前に登録の必要がないことを除き、検証ルールと同様に動作します。 フィルタ関数を書き、スクリプトからコールします。 (trim, addslashes, htmlentities, などの) すべての PHP 関数が使用できますし、要素値へ再帰的に適用されます。

フォームの出力

HTML_QuickForm は、いろいろな種類のレンダラの使用が可能ですので、 フォームの出力を様々にカスタマイズすることができます。 デフォルトのレンダラを使えば、各要素の属性値やエラーメッセージ・ヘッダ・必須入力欄の表示といった点を カスタマイズできますし、独自のレンダラを書くことも可能です。

フォームのカスタマイズと出力ヘルパー

目次
HTML_QuickForm::freeze() -- フォームの要素を "凍結" する
HTML_QuickForm::isElementFrozen() -- 要素が凍結されているかどうかを調べる
HTML_QuickForm::isFrozen() -- フォームが凍結されているかどうかを調べる
HTML_QuickForm::setRequiredNote() -- 必須入力の注意書きを設定する
HTML_QuickForm::setJsWarnings() -- JavaScript 警告メッセージを設定する
HTML_QuickForm::getRequiredNote() -- 必須入力の注意書きを返す
HTML_QuickForm::getValidationScript() -- クライアント側の検証スクリプトを返す
HTML_QuickForm::accept() -- レンダラを受け取る
HTML_QuickForm::defaultRenderer() -- デフォルトレンダラオブジェクトへの参照を返す
HTML_QuickForm::toArray() -- フォームの内容を配列で返す
HTML_QuickForm::toHtml() -- フォームを HTML で返す
HTML_QuickForm::display() -- フォームを HTML で出力する

基本的なレンダラ

目次
導入 - レンダラ -- フォームを出力する方法
HTML_QuickForm_Renderer_Default -- デフォルトのレンダラ
HTML_QuickForm_Renderer_Default::clearAllTemplates() -- すべてのテンプレートを消去する
HTML_QuickForm_Renderer_Default::setElementTemplate() -- 要素のテンプレートを設定する
HTML_QuickForm_Renderer_Default::setFormTemplate() -- フォームのテンプレートを設定する
HTML_QuickForm_Renderer_Default::setGroupElementTemplate() -- グループ要素のテンプレートを設定する
HTML_QuickForm_Renderer_Default::setGroupTemplate() -- グループラッパーのテンプレートを設定する
HTML_QuickForm_Renderer_Default::setHeaderTemplate() -- ヘッダのテンプレートを設定する
HTML_QuickForm_Renderer_Default::setRequiredNoteTemplate() -- 'required' の記述のテンプレートを設定する
HTML_QuickForm_Renderer_Default::toHtml() -- HTML を返す
HTML_QuickForm_Renderer_Array -- フォームを配列で表す
constructor HTML_QuickForm_Renderer_Array::HTML_QuickForm_Renderer_Array() -- コンストラクタ
HTML_QuickForm_Renderer_Array::setElementStyle() -- 要素のレンダリングに使用するスタイルを設定する
HTML_QuickForm_Renderer_Array::toArray() -- 結果の配列を返す
HTML_QuickForm_Renderer_Object -- フォームをオブジェクトで表す
constructor HTML_QuickForm_Renderer_Object::HTML_QuickForm_Renderer_Object() -- コンストラクタ
HTML_QuickForm_Renderer_Object::toObject() -- 結果のオブジェクトを返す

これらのレンダラは、バージョン 3.0 以前の HTML_QuickForm コードを基礎としており、動作に他のクラスを必要としません。

テンプレートベースのレンダラ

目次
HTML_QuickForm_Renderer_ArraySmarty -- '静的な' Smarty テンプレートのためのレンダラ
constructor HTML_QuickForm_Renderer_ArraySmarty::HTML_QuickForm_Renderer_ArraySmarty() -- コンストラクタ
HTML_QuickForm_Renderer_ArraySmarty::setErrorTemplate() -- 検証エラーが発生した要素をレンダリングする方法を設定する
HTML_QuickForm_Renderer_ArraySmarty::setRequiredTemplate() -- 必須要素をレンダリングする方法を設定する
HTML_QuickForm_Renderer_ITDynamic -- 統合されたテンプレート用の動的なレンダラ
constructor HTML_QuickForm_Renderer_ITDynamic::HTML_QuickForm_Renderer_ITDynamic() -- コンストラクタ
HTML_QuickForm_Renderer_ITDynamic::setElementBlock() -- 要素のレンダリングに使用するブロックを設定する
HTML_QuickForm_Renderer_ITDynamic::setHeaderBlock() -- ヘッダのレンダリングに使用するブロックの名前を設定する
HTML_QuickForm_Renderer_ITStatic -- 統合されたテンプレート用の静的なレンダラ
constructor HTML_QuickForm_Renderer_ITStatic::HTML_QuickForm_Renderer_ITStatic() -- コンストラクタ
HTML_QuickForm_Renderer_ITStatic::setErrorTemplate() -- 検証エラーが発生した要素をレンダリングする方法を設定する
HTML_QuickForm_Renderer_ITStatic::setRequiredTemplate() -- 必須要素をレンダリングする方法を設定する
HTML_QuickForm_Renderer_ObjectFlexy -- Flexy テンプレート用のレンダラ
constructor HTML_QuickForm_Renderer_ObjectFlexy::HTML_QuickForm_Renderer_ObjectFlexy() -- コンストラクタ
HTML_QuickForm_Renderer_ObjectFlexy::setHtmlTemplate() -- html 要素のレンダリングに使用するテンプレートのファイル名を設定する
HTML_QuickForm_Renderer_ObjectFlexy::setLabelTemplate() -- html 要素のレンダリングに使用するテンプレートのファイル名を設定する
HTML_QuickForm_Renderer_QuickHtml -- 簡単で柔軟な方式を用いて、フォーム要素を HTML にレンダリングする
constructor HTML_QuickForm_Renderer_QuickHtml::HTML_QuickForm_Renderer_QuickHtml() -- コンストラクタ
HTML_QuickForm_Renderer_QuickHtml::toHtml() -- HTML を返す
HTML_QuickForm_Renderer_QuickHtml::elementToHtml() -- 指定したフォーム要素を HTML にレンダリングする

これらのレンダラは、フォームの HTML 出力の生成にテンプレートエンジンを使用します。

レンダラのインフラストラクチャ

目次
HTML_QuickForm_Renderer -- レンダラの基底クラスとなる抽象クラス (パッケージ開発者用)
HTML_QuickForm_Renderer::startForm() -- フォームの処理を開始する (パッケージ開発者用)
HTML_QuickForm_Renderer::finishForm() -- フォームの処理を終了する (パッケージ開発者用)
HTML_QuickForm_Renderer::startGroup() -- グループの処理を開始する (パッケージ開発者用)
HTML_QuickForm_Renderer::finishGroup() -- グループの処理を終了する (パッケージ開発者用)
HTML_QuickForm_Renderer::renderElement() -- 要素を処理する (パッケージ開発者用)
HTML_QuickForm_Renderer::renderHeader() -- ヘッダを処理する (パッケージ開発者用)
HTML_QuickForm_Renderer::renderHidden() -- hidden 要素を処理する (パッケージ開発者用)
HTML_QuickForm_Renderer::renderHtml() -- 生の HTML/テキスト 要素を処理する (パッケージ開発者用)

既存のレンダラを拡張したり、新しいレンダラを書く場合には、以下が参考となるでしょう。