CodeIgniterでエラー時にフォームに値を戻す方法

Form Validationを設定して、View側ではset_value(‘name’, ‘default_value’);でいいのかと思っていたらそうではありませんでした。なんなんだー!CodeIgniter!とても面倒だぞ!!

set_value(‘name’, ‘default_value’)メソッドは、Form Validationで検証された要素のみ、反映されます。例えば、5つの要素があったとして、

  1. $this->form_validation->set_rules(‘firstname’, ‘FirstName’, ‘required’)
  2. firstname
  3. lastname
  4. address
  5. tel
  6. 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 {
      // 正常
    }
  }
}

だ、ださい…。他にいい方法があるのだろうか?


タグ CodeIgniter, PHP | パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です