2010-12-27 8 views
0

私はCodeigniterで、自分のコントローラに検証コードを入れ、検証ルール/デフォルトをモデルに入れてフォームコードを整理する必要があると読んだことがあります。Codeigniterフレームワークでフォームコードを整理する場所

私のモデルに以下のような関数を作成し、それをコントローラの中から呼び出すだけで簡単にできますか?確かにコントローラをきれいに保ちますが、これが物事を整理する正しい方法であることを確認したいと思います。

//inside widget_model.php 

function myRules() 
{ 
    $this->form_validation->set_rules('item_name', 'name', 'required'); 
    $this->form_validation->set_rules('item_description', 'description', 'required'); 
} 


function myDefaults() 
{ 
    return $defaults = array(
     'page_title' => "Add new widget", 
     'fname' => 'widget_name', 
     'fdescription' => 'widget_description' 
    ); 
} 

答えて

1

あなたはそのIMHOを行う必要はありません。 最良の方法は、このようなあなたのコントローラーで検証ルールを設定することです:

$this->load->helper(array('form', 'url')); 

$this->load->library('validation'); 

$rules['username'] = "required"; 
$rules['password'] = "required"; 
$rules['passconf'] = "required"; 
$rules['email']  = "required"; 

$this->validation->set_rules($rules); 

$fields['username'] = 'Username'; 
$fields['password'] = 'Password'; 
$fields['passconf'] = 'Password Confirmation'; 
$fields['email'] = 'Email Address'; 

$this->validation->set_fields($fields); 

if ($this->validation->run() == FALSE) 
{ 
    $this->load->view('myform'); 
} 
else 
{ 
    $this->load->view('formsuccess'); 
} 

}

あなたはあなたのモデルに何を配置する必要はありません。ここでは、件名に

より: http://codeigniter.com/user_guide/libraries/validation.html

+0

ありがとうアンドレイ。それはちょうど "スキニーコントローラ、脂肪モデル"を設定するために、モデルにそれを分離することはちょっと奇妙に思えました。私はちょうど経験豊かな別の開発者から、コントローラにその検証情報を入れることが悪い習慣ではないことを聞きたかったのです。 – justinl

0

別のオプションはセットで注文したあなたのvalidation rules in a config fileを置くことになります。 CIはこれらを自動的にロードします(名前が正しく指定されている場合)。

関連する問題