Form Validationを設定して、View側ではset_value(‘name’, ‘default_value’);でいいのかと思っていたらそうではありませんでした。なんなんだー!CodeIgniter!とても面倒だぞ!!
set_value(‘name’, ‘default_value’)メソッドは、Form Validationで検証された要素のみ、反映されます。例えば、5つの要素があったとして、
- $this->form_validation->set_rules(‘firstname’, ‘FirstName’, ‘required’)
- firstname
- lastname
- address
- tel
- fax
の5つがあるとして、firstname, lastnameが必須で、後は別にいいやーと思って、以下のようにしたとします。
function create() {
if ($this->input->post()) {
$this->load->library('form_validation');
$this->form_validation('firstname', 'FirstName', 'required');
$this->form_validation('lastname', 'LastName', 'required');
if ($this->form_validation->run() == false) {
// エラー
} else {
// 正常
}
}
}
この場合、エラーになって再度フォームを表示しても、set_valueメソッドが有効なのはfirstnameとlastnameだけで、他のフィールドは空欄になってしまいます!
じゃあどう回避するのか?こうでしょ!
function create() {
if ($this->input->post()) {
$this->load->library('form_validation');
$this->form_validation('firstname', 'FirstName', 'required');
$this->form_validation('lastname', 'LastName', 'required');
$this->form_validation('address', '', '');
$this->form_validation('tel', '', '');
$this->form_validation('fax', '', '');
if ($this->form_validation->run() == false) {
// エラー
} else {
// 正常
}
}
}
だ、ださい…。他にいい方法があるのだろうか?
