フォーム ライブラリ
Ziu 付属のフォームライブラリです。
フォームエレメントの生成や選択リストへのデータバインドなど、入力フォームを作成に便利な機能を提供します。
設定
フォームライブラリを利用するための設定を行ないます。
単体で利用の設定方法
本フォームライブラリは、単体で使用することができます。
$fm = new Form;
$fm->config(array(
'except_values' => 'action',
'preset_values' => array(
'gender' => array(1 => '男性', 2 => '女性'),
),
))->values($request);
Ziu で利用の設定方法
Ziu での利用では、ロジッククラスにメソッドを定義し、その内で初期化します。(主に init()
メソッドなどで)
$fm = lib('form')->config(array(
'except_values' => 'action',
'preset_values' => array(
'gender' => array(1 => '男性', 2 => '女性'),
),
))->values($this->req);
設定項目
項目 | 型 | 初期値 | 説明 |
---|---|---|---|
except_values | string | なし | 除外パラメータ名を指定します。hidden() メソッドによる一括生成の対象外となります。カンマ区切りで複数指定が可能です。 |
file_extend_mode | boolean | TRUE | file() メソッドの拡張モードの有効/無効を指定します。有効の場合、file() メソッドのコール時に規定のhiddenタグが自動挿入されます。 |
file_preview_text | string | [Preview] | fire_preview() メソッドでプレビューリンクのテキストを指定します。 |
separator | string | |
checkbox() 、radio() メソッドにて複数生成する項目間のセパレータ文字を指定します。 |
preset_values | array | なし | checkbox() 、radio() 、select() メソッドの選択項目をプリセットリストとして指定します。 |
file_extend_mode について
file('sample')
メソッドで引数に sample を指定し実行した場合、設定により以下の挙動になります。
-
TRUE 設定
アップロードライブラリとの連携モードとなり、3つのエレメントが作成されます。
<input type="file" name="upl_sample" value="" />
: ファイル指定用 (プレフィックス : upl_)
<input type="hidden" name="tmp_sample" value="" />
: 一時的に値を保持用 (プレフィックス : tmp_)
<input type="hidden" name="sample" value="" />
: 元の値を保持用 - FALSE 設定
通常のエレメント1つが作成されます。
<input type="file" name="sample" value="" />
: ファイル指定用
使い方
Ziu では、ロジッククラスを利用して、フォームライブラリを初期化します。
ロジッククラス
public function init()
{
$this->req = lib('request')->post();
render_set(array(
'f' => lib('form')->config(array(
'except_values' => 'action',
'preset_values' => array(
'gender' => array(1 => '男性', 2 => '女性'),
),
))->values($this->req);
), FALSE);
}
values()
メソッドでリエクストライブラリで取得したPOSTリクエスト値 $this->req
をセットしフォームライブラリにバインドしています。
ビューテンプレート(入力画面)
<?= $f->open(uri('member/entry/confrim'), 'POST') ?>
<table>
<tr>
<th>名前</th><td><?= $f->text('name') ?></td>
</tr>
<tr>
<th>性別</th><td><?= $f->radio('gender') ?></td>
</tr>
<tr>
<td colspan="2">
<?= $f->submit('action', '確認') ?>
<?= $f->submit('action', 'リセット') ?>
</td>
</tr>
</table>
<?= $f->close() ?>
エレメントメソッドでフォームエレメントを構築していきます。
ビューテンプレート(確認画面)
<?= $f->open(uri('member/entry/execute'), 'POST') ?>
<table>
<tr>
<th>名前</th><td><?= $f->fetch('name') ?></td>
</tr>
<tr>
<th>性別</th><td><?= ((string)$f->fetch('gender') == 1 ? '男性' : '女性') ?></td>
</tr>
<tr>
<td colspan="2">
<?= $f->submit('action', '戻る') ?>
<?= $f->submit('action', '登録') ?>
</td>
</tr>
</table>
<?= $f->close() ?>
fetch()
メソッドでバインドされた値を取得することができます。
(注意)
エレメントメソッドの実行は、チェーンメソッド形式でフォームオブジェクト自身が戻ります。
fetch()
メソッドや、各エレメントメソッドの文字列値を取得する際には、(string) でキャストする必要があります。
PHPでは文字列処理(echo();
など)で自動キャストが行われるので、キャスト処理が不要な場合があります。
メソッドリファレンス
フォームライブラリのメソッドリファレンスです。
- 設定メソッド
- フォームエレメントメソッド
- 非表示エレメントメソッド
- hidden() :
<input type="hidden">
タグを生成
- hidden() :
- 入力エレメントメソッド
- text() :
<input type="text">
タグを生成 - password() :
<input type="password">
タグを生成 - tel() :
<input type="tel">
タグを生成 - email() :
<input type="email">
タグを生成 - url() :
<input type="url">
タグを生成 - number() :
<input type="number">
タグを生成 - textarea() :
<textarea>
タグを生成
- text() :
- 選択エレメントメソッド
- radio() :
<input type="radio">
タグを生成 - checkbox() :
<input type="checkbox">
タグを生成 - select() :
<select>
タグを生成
- radio() :
- ファイルエレメントメソッド
- file() :
<input type="file">
タグ - file_preview() : プレビューリンク/画像を生成
- file() :
- ボタンエレメントメソッド
- button() :
<input type="button">
タグを生成 - buttonquote() :
<button>
タグを生成 - submit() :
<input type="submit">
タグを生成 - reset() :
<input type="reset">
タグを生成 - image() :
<input type="image">
タグを生成
- button() :
- その他メソッド
- attributes() : タグに属性を付加
- wrap() : タグに文字列をラップ
- outline() : タグを表組み
- fetch() : フォーム値を取得
- preset() : プリセットバリューのラベルを取得
設定メソッド
config(array $config)
フォームライブラリの初期設定をします。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$config | array | 設定を配列で指定 |
$config
に指定する設定項目については、設定を参照して下さい。
例) lib('form')->config(array('except_values' => 'action'));
values(array $values)
フォームライブラリにバインドするフォーム値を指定します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$values | array | バインドするフォーム値 |
例) lib('form')->values(array('name' => ''));
フォームエレメントメソッド
open($action, $method = 'post', $hidden = FALSE)
<form>
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$action | string | フォーム送信するURL |
$method | string | フォーム送信メソッド (post、get、file のいづれか指定) |
$hidden | boolean | hidden() メソッドの内部実行フラグ |
$method
に file を指定するとファイル送信メソッド になります。
ファイル送信メソッド : <form action="..." method="post" enctype="multipart/form-data">
$hidden
を TRUE にすると、内部で hidden()
メソッドが実行されバインドされているフォーム値が自動的に hidden タグで生成されます。(主に確認画面で利用)
例) $f->open('member/entry');
close()
</form>
タグを生成します。
戻り値
型 : object Form
引数値
なし
例) $f->close();
非表示エレメントメソッド
hidden($name = TRUE, $value = '')
<input type="hidden">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$name
を省略した場合、バインドされている値を全てに対して生成します。
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->hidden('name', 'テスト ユーザー');
入力エレメントメソッド
text($name, $value = '')
<input type="text">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->text('name');
password($name, $value = '')
<input type="password">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->password('login_pw');
tel($name, $value = '')
<input type="tel">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->tel('phone');
email($name, $value = '')
<input type="email">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->email('address');
url($name, $value = '')
<input type="url">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->url('site_url');
number($name, $value = '')
<input type="number"">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->number('age');
textarea($name, $value = '')
<textarea>
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | mixed | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->textarea('message');
選択エレメントメソッド
radio($name, $value = '', $label = '')
<input type="radio">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | mixed | エレメント名 |
$value | string | フォーム値 |
$label | string | ラベル名 |
$name
に文字列、又は配列を指定することができます。
-
$name
に配列リストを指定した場合
リスト :array('エレメント名' => array('値1' => 'ラベル名1', '値2' => 'ラベル名2', ...))
プリセットリストを使用せず、直接リストを指定することができます。 $name
に文字列でエレメント名を指定した場合
$value
は通常省略しバインドされているプリセットリストとフォーム値をセットします。指定した場合は優先されます。
$label
は通常省略しバインドされているプリセットリストを利用します。指定した場合は優先されます。
例) $f->radio('gender');
checkbox($name, $value = '', $label = '')
<input type="checkbox">
タグを生成します。
(注意)
エレメント名にはブラケット型の配列として強制的に指定されます。
$f->checkbox('favorites');
でメソッド実行した場合
<input type="checkbox" name="favorites[]" value="xxx" />
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | mixed | エレメント名 |
$value | string | フォーム値 |
$label | string | ラベル名 |
引数値については radio() メソッドと同じ動作になります。
例) $f->checkbox('favorites');
select($name, array $option = array(), $value = '')
<select>
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | mixed | エレメント名 |
$option | array | オプションリスト |
$value | string | フォーム値 |
$option
は通常省略しバインドされているプリセットリストを利用します。指定した場合は優先されます。
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->select('pref');
ファイルエレメントメソッド
file($name, $value = '')
<input type="file">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
ただしHTMLの仕様上、フォーム値を指定(<input type="file" value="/img/logo.jpg">
など)しても動作しません。
初期設定の file_extend_mode が TRUE の場合、アップロードライブラリと連携するタグが同時に生成されます。
詳しくは、設定を参照して下さい。
例) $f->file('image');
file_preview($type, $name, $real, $temp = '')
file()
メソッドでファイル送信フォームを利用の時に、プレビューリンク/画像を生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$type | string | 表示タグ名 (a、img) |
$name | string | エレメント名 |
$real | string | 正規保存フォルダURIを指定したバインド変数名 |
$temp | string | 一時保存フォルダURIを指定したバインド変数名 |
例) $f->file_preview('img', 'image', 'real_uri', 'temp_uri');
ボタンエレメントメソッド
button($name, $value = '')
<input type="button">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->button('確認ボタン');
buttonquote($name, $value = '')
<button>
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->buttonquote('開く');
submit($name, $value = '')
<input type="submit">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->submit('action', '送信');
reset($name, $value = '')
<input type="reset">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->reset('action', 'リセット');
image($name, $value = '')
<input type="image">
タグを生成します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->image('thumbnail');
その他メソッド
attributes(array $attr)
エレメントメソッドで生成したタグに属性を付加します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$attr | array | 属性リスト |
例) $f->text('name')->attributes(array('class' => 'w200'));
wrap($pre, $suf)
エレメントメソッドで生成したタグに対して指定の文字列(HTMLタグ等)で囲みます。
エレメントリストを生成する radio()
、checkbox()
メソッドでは各エレメントに対して囲みます。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$pre | string | 前部の文字列 |
$suf | string | 後部の文字列 |
例) $f->radio('genre')->wrap('
<div class="small">
', '</div>
');
outline($rows = 1, $cols = 1, $attr = array())
エレメントメソッドで生成したタグに対して <table>
タグで表組みをします。
エレメントリストを生成する radio()
、checkbox()
メソッドでは各エレメントが表組み対象となります。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$rows | integer | 行数 |
$cols | integer | 列数 |
$attr | array | テーブル属性値 |
例) $f->checkbox('favorites')->wrap(5, 3, array('class' => 'w300'));
fetch($name, $value = '', $sanitize = TRUE)
バインドされているエレメントのフォーム値を取得します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名 |
$value | string | フォーム値 |
$sanitize | boolean | サニタイズフラグ |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->fetch('name');
preset($name, $value = '', $sanitize = TRUE)
プリセットバリューのラベル文字列を取得します。
戻り値
型 : object Form
引数値
項目 | 型 | 内容 |
---|---|---|
$name | string | エレメント名(プリセット名) |
$value | string | フォーム値 |
$sanitize | boolean | サニタイズフラグ |
$value
は通常省略しバインドされているフォーム値を利用します。指定した場合は優先されます。
例) $f->preset('gender', 1); // 男