2ntブログ
2024 101234567891011121314151617181920212223242526272829302024 12
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PHPフレームワーク入門―CakePHP/Zend Framework/symfony/CodeIgniter対応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を行ってくれる上に、フォームの値まで引き継いでくれる訳だ。
もちろん、選択された値もそのままの状態で。
いやぁー、便利便利。
あっという間に、フォームの入力チェックと引継ぎ処理が完成っと。


コメント非表示