HTMLの入力フォームを作るHTML_QuickFormについて調べてみました。
目次
HTML_QuickForm とは
HTML_QuickFormは、テキスト入力欄、プルダウンメニューなどの簡単な入力フォームを生成することが出来るライブラリです。
HTML_QuickFormを使うと、PHPのプログラムで簡単な入力フォームを作ることが出来ます。
HTML_QuickFormは、PEARを使ってインストールします。
PEARとは?読みかた、意味
PEAR (PHP Extension and Application Repository) は、PHPで利用する事ができるライブラリ(パッケージ)を提供しているサービスです。
PEARの読み方は、ペアです。洋ナシという意味があります。
PEARはPHPで書かれたライブラリを提供していますが、C言語で書かれた拡張ライブラリ(extension)を提供するPECLというサービスも存在します。
PEARはパッケージ管理ツール (パッケージマネージャー) の一つです。
PHPのパッケージ管理ツールとしてはComposerが有名ですが、PEARもPHPのパッケージ管理ツールです。
HTML_QuickForm ダウンロード、インストール
HTML_QuickForm ダウンロード、インストール方法は次の通りです。
まず、PEARをyumでインストールします。
# yum install -y php-pear
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# yum install -y php-pear 読み込んだプラグイン:fastestmirror, langpacks Repository remi-safe is listed more than once in the configuration Repository remi-php70 is listed more than once in the configuration http://download.opensuse.org/repositories/home%3A/tpokorra%3A/mono/CentOS_CentOS-6/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found 他のミラーを試します。 Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * remi-php56: ftp.riken.jp * remi-safe: ftp.riken.jp * updates: mirrors.shu.edu.cn 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ php-pear.noarch 1:1.10.5-6.el7.remi を インストール --> 依存性の処理をしています: php-composer(fedora/autoloader) のパッケージ: 1:php-pear-1.10.5-6.el7.remi.noarch --> トランザクションの確認を実行しています。 ---> パッケージ php-fedora-autoloader.noarch 0:1.0.0-1.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ===================================================================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ===================================================================================================================================================================== インストール中: php-pear noarch 1:1.10.5-6.el7.remi remi-php56 356 k 依存性関連でのインストールをします: php-fedora-autoloader noarch 1.0.0-1.el7 epel 9.6 k トランザクションの要約 ===================================================================================================================================================================== インストール 1 パッケージ (+1 個の依存関係のパッケージ) 合計容量: 366 k インストール容量: 2.1 M Downloading packages: 警告: /var/cache/yum/x86_64/7/epel/packages/php-fedora-autoloader-1.0.0-1.el7.noarch.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。 Importing GPG key 0x352C64E5: Userid : "Fedora EPEL (7) <epel@fedoraproject.org>" Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5 Package : epel-release-7-5.noarch (@extras) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : php-fedora-autoloader-1.0.0-1.el7.noarch 1/2 インストール中 : 1:php-pear-1.10.5-6.el7.remi.noarch 2/2 検証中 : php-fedora-autoloader-1.0.0-1.el7.noarch 1/2 検証中 : 1:php-pear-1.10.5-6.el7.remi.noarch 2/2 インストール: php-pear.noarch 1:1.10.5-6.el7.remi 依存性関連をインストールしました: php-fedora-autoloader.noarch 0:1.0.0-1.el7 完了しました! |
次に、PEARを使って、HTML_QuickFormをインストールします。
# pear install HTML_QuickForm
1 2 3 4 5 6 7 8 9 10 11 12 |
# pear install HTML_QuickForm WARNING: "pear/HTML_QuickForm" is deprecated in favor of "pear/HTML_QuickForm2" WARNING: channel "pear.php.net" has updated its protocols, use "pear channel-update pear.php.net" to update WARNING: "pear/HTML_Common" is deprecated in favor of "pear/HTML_Common2" downloading HTML_QuickForm-3.2.16.tgz ... Starting to download HTML_QuickForm-3.2.16.tgz (103,788 bytes) .....................done: 103,788 bytes downloading HTML_Common-1.2.5.tgz ... Starting to download HTML_Common-1.2.5.tgz (4,617 bytes) ...done: 4,617 bytes install ok: channel://pear.php.net/HTML_Common-1.2.5 install ok: channel://pear.php.net/HTML_QuickForm-3.2.16 |
HTML_QuickFormの使い方
HTML_QuickFormの使い方は以下に詳しく書かれています。
PEAR HTML_QuickForm入門ガイド
HTML_QuickForm addElementの引き数
HTML_QuickFormでは、入力用のHTMLを生成するために、addElementメソッドの1番目の引数に、「text」や「submit」以外に次の引数を指定できます。
標準HTML
生成するHTML | 第1(タグの種類) | 第2 | 第3 | 第4 | 第5 | 第6 |
---|---|---|---|---|---|---|
ボタン | button | strin gname属性 |
string value属性 |
mixed その他の属性 |
||
チェックボックス | checkbox | string name属性 |
string checkboxのラベル |
string checkboxの右に配置される文字列 |
mixed その他の属性 |
|
hidden | string name属性 |
string value属性 |
mixed その他の属性 |
|||
画像 | image | string name属性 |
string src属性 |
mixed その他の属性 |
||
パスワード | password | string name属性 |
string value属性 |
mixed その他の属性 |
||
ラジオボタン | radio | string name属性 |
string ラベル |
string radioの右に配置される文字列 |
string value属性 |
mixed その他の属性 |
リセットボタン | reset | string name属性 |
string value属性 |
mixed その他の属性 |
||
プルダウンメニュー | select | string name属性 |
string ラベル |
mixed options属性selectの値配列 |
mixed その他の属性 |
|
送信ボタン | submit | string name属性 |
string value属性 |
mixed その他の属性 |
||
テキスト入力欄 | text | string name属性 |
string value属性 |
mixed その他の属性 |
||
テキストエリア | textarea | string name属性 |
string value属性 |
mixed その他の属性 |
カスタム 要素
生成するHTML | 第1(タグの種類) | 第2 | 第3 | 第4 | 第5 | 第6 |
---|---|---|---|---|---|---|
advcheckbox | string name属性 |
string checkboxのラベル |
string checkboxの右に配置される文字列 |
mixed その他の属性 |
mixed チェックonの時の値とOffの時の値 |
|
autocomplete | string name属性 |
string ラベル |
array autocompleteの元になる値 |
mixed その他の属性 |
||
日付 | date | string name属性 |
string ラベル |
array 日付の表示形式 |
mixed その他の属性 |
|
header | string | string 表示文字列 |
||||
hiddenselect | string name属性 |
string ラベル |
mixed options属性selectの値配列 |
mixed その他の属性 |
||
hierselect | string name属性 |
string ラベル |
mixed その他の属性 |
|||
リンク | link | string name属性 |
string ラベル |
stringy href属性 |
string リンク文字列 |
mixed その他の属性 |
文字列 | static | string | string ラベル |
string 表示文字列 |
HTML_QuickForm addElementの書き方サンプル
HTML_QuickForm addElementの書き方サンプルは以下の通りです。
追加する要素の種類 | 構文 |
---|---|
AdvCheckBox | addElement(‘advcheckbox’, string $name, string $label, string $text, mixed $attr, mixed $values) |
Button | addElement(‘button’, string $name, string $value, mixed $attr) |
CheckBox | addElement(‘checkbox’, string $name, string $label, string $text, mixed $attr) |
Date | addElement(‘date’, string $name, string $label, array $opt, mixed $attr) |
File | addElement(‘file’, string $name, string $label, mixed $attr) |
Header | addElement(‘header’, string $name, string $label) |
Hidden | addElement(‘hidden’, string $name, string $value, mixed $attr) |
HierSelect | addElement(‘hierselect’, string $name, string $label, mixed $attr) |
HTML | addElement(‘html’, string $html) |
Image | addElement(‘image’, string $name, string $src, mixed $attr) |
Link | addElement(‘link’, string $name, string $label, string $href, string $value, mixed $attr) |
Password | addElement(‘password’, string $name, string $label, mixed $attr) |
Radio | addElement(‘radio’, string $name, string $text, int $value, mixed $attr) |
Reset | addElement(‘reset’, string $name, mixed $attr) |
Select | addElement(‘select’, string $name, string $label, mixed $value, mixed $attr) |
Static | addElement(‘static’, string $label, string $text) |
Submit | addElement(‘submit’, string $name, string $value, mixed $attr) |
Text | addElement(‘text’, string $name, string $label, mixed $attr) |
TextArea | addElement(‘textarea’, string $name, string $label, mixed $attr) |
addElementとcreateElementの違い
createElement メソッドも上表と同様の構文で要素を操作することができます。
createElementメソッドとaddElementメソッドは挙動に違いがあります。
addElementメソッドが指定された単一の要素をフォームに直接追加するのに対して、createElementメソッドは新規の要素を生成するだけでフォームへの追加は行いません。
createElementメソッドで作成した要素は以下のようにいったん配列に格納しておいて、addGroupメソッドで要素グループとしてフォームに追加します。
よく質問のあるフォームは以下の通りです。
HTML_QuickForm date
これは日付を入力するフォームです。
HTML_QuickForm radio
これはラジオボタンを入力するフォームです。
HTML_QuickForm static
これは、静的なラベルを入れることが可能です。
textと異なり、ユーザーが変更することはできません。
HTML_QuickForm select
これは、プルダウンメニューを生成します。
HTML_QuickForm createElement radio
これは、ラジオボタンを追加するときに使います。
以下のように使います。
$gender[] = $form->createElement('radio', 'gender', NULL, '男', 'male');
$gender[] = $form->createElement('radio', 'gender', NULL, '女', 'female');
$form->addGroup($gender, 'gender', "性別:");
HTML_QuickForm validate
HTML_QuickForm::validate() は、サーバ側での検証を行います。
使い方
require_once 'HTML/QuickForm.php';
boolean HTML_QuickForm::validate ( ( void )
エラーが見つからなかった場合に TRUE を返します。
例外はスローされません。
HTML_QuickForm2とは
HTML_QuickForm2は、HTML_QuickFormの改良版です。
普通は、HTML_QuickForm2を使えばいいはずなんですが、こちらの方はあまり参考になる資料がありません。
こちらがHTML_QuickForm2の公式サイトと思われます。
Package Information: HTML_QuickForm2
以下に日本語の解説があります。
[pear]QuickForm2を使ってみる
コメント