form_validationクラスのset系 | 2010-05-10 |
PHPフレームワーク入門―CakePHP/Zend Framework/symfony/CodeIgniter対応 (2009/05) 掌田 津耶乃 商品詳細を見る |
codeigniterに大分慣れてきた。
慣れてくればくるほど、すげぇなと思える。
よく出来てるわ。
今回使ってみて驚いたのが、form_validationクラス。
その中でも、set系のメソッド。
一応、詳細はこちらね。
フォーム・バリデーション(検証)(←本家サイト)
何が凄いって、フォームの値の引継ぎね。
従来、フォームの入力値の引継ぎって、結構面倒だった。
テキスト入力だけならいいけど、プルダウンとかチェックボックスとかラジオボタンとか。
どの値が選択されたか、チェックする必要あったんだよね。
これするのが嫌で嫌で。。。
でも、set系のメソッド使うと、これがチョチョイノチョイ。
カタカナで書いたけど、ホントこうやって書きたくなる。
使えば、気持ち分かるよ、きっと。
まずは、コントローラで、validationのルールを設定。
/**
* 初期化
*/
function init()
{
// バリデートルールの設定
$this->form_validation->set_rules('username', 'ユーザ名', 'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'パスワード', 'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'パスワードの確認', 'required');
$this->form_validation->set_rules('email', 'メールアドレス', 'required|callback_check_email');
$this->form_validation->set_rules('myselect', 'セレクトボックスの確認', 'required');
$this->form_validation->set_rules('mycheck[]', 'セレクトボックスの確認', 'required');
$this->form_validation->set_rules('myradio', 'セレクトボックスの確認', 'required');
}
次に、ビューでフォームのvalueにset系を指定する。
<?php echo form_open('study_form'); ?>
<h5>ユーザ名</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
<h5>パスワード</h5>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />
<h5>パスワードの確認</h5>
<input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" />
<h5>メールアドレス</h5>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />
<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >1</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >2</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >3</option>
</select>
<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1'); ?> />
<input type="checkbox" name="mycheck[]" value="2" <?php echo set_checkbox('mycheck[]', '2'); ?> />
<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />
<div><input type="submit" value="送信" /></div>
うん。
実にこれだけ。
これだけで、validationを行ってくれる上に、フォームの値まで引き継いでくれる訳だ。
もちろん、選択された値もそのままの状態で。
いやぁー、便利便利。
あっという間に、フォームの入力チェックと引継ぎ処理が完成っと。
その中でも、set系のメソッド。
一応、詳細はこちらね。
フォーム・バリデーション(検証)(←本家サイト)
何が凄いって、フォームの値の引継ぎね。
従来、フォームの入力値の引継ぎって、結構面倒だった。
テキスト入力だけならいいけど、プルダウンとかチェックボックスとかラジオボタンとか。
どの値が選択されたか、チェックする必要あったんだよね。
これするのが嫌で嫌で。。。
でも、set系のメソッド使うと、これがチョチョイノチョイ。
カタカナで書いたけど、ホントこうやって書きたくなる。
使えば、気持ち分かるよ、きっと。
まずは、コントローラで、validationのルールを設定。
/**
* 初期化
*/
function init()
{
// バリデートルールの設定
$this->form_validation->set_rules('username', 'ユーザ名', 'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'パスワード', 'required|matches[passconf]');
$this->form_validation->set_rules('passconf', 'パスワードの確認', 'required');
$this->form_validation->set_rules('email', 'メールアドレス', 'required|callback_check_email');
$this->form_validation->set_rules('myselect', 'セレクトボックスの確認', 'required');
$this->form_validation->set_rules('mycheck[]', 'セレクトボックスの確認', 'required');
$this->form_validation->set_rules('myradio', 'セレクトボックスの確認', 'required');
}
次に、ビューでフォームのvalueにset系を指定する。
<?php echo form_open('study_form'); ?>
<h5>ユーザ名</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />
<h5>パスワード</h5>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />
<h5>パスワードの確認</h5>
<input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" />
<h5>メールアドレス</h5>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />
<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >1</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >2</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >3</option>
</select>
<input type="checkbox" name="mycheck[]" value="1" <?php echo set_checkbox('mycheck[]', '1'); ?> />
<input type="checkbox" name="mycheck[]" value="2" <?php echo set_checkbox('mycheck[]', '2'); ?> />
<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />
<div><input type="submit" value="送信" /></div>
うん。
実にこれだけ。
これだけで、validationを行ってくれる上に、フォームの値まで引き継いでくれる訳だ。
もちろん、選択された値もそのままの状態で。
いやぁー、便利便利。
あっという間に、フォームの入力チェックと引継ぎ処理が完成っと。