コントローラを最小限に抑えてください。ビュー/モデルとの間でデータをやりとりするためにコントローラを使用することを検討してください。また、私はあなたのモデル、HTMLエンコーディング、日付解析などの作業を重視することをお勧めします。ビューで行うべき唯一の作業は、変数を吐き出すかループすることです。
Codeigniter 2.1ではすべてのform_validation設定アプリケーション/設定/ form_validation.php
内部の一つのファイルにだから、本当にすべてのコントローラが行う必要がある
if ($this->form_validation->run('auth/register')) {/** interact with your models or libraries (keep the heavy stuff outside **/)}else{//show form}
が編集言っている:@catfish
コントローラを最小限に保つことは、「コントローラに何も入れない」と同じではありません。上で気がついたら、コントローラにフォームの検証を含めましたが、コントローラからform_validationの設定を除外することができます。
最小コントローラーはそうそうです。
class someclass extends CI_Controller
{
//The form validation rules go inside the application/config/form_validation.php
//and is called automatically once the class/method is init
public function __construct()
{
parent::__construct();
}
public function form()
{
$this->load->view('templates/public', array('content'=>'form_view.php'));
}
public function validate()
{
if($this->form_validation->run('someclass/validate'))// optionally pass the config key
{
if(Model::method($this->input->post()))
{
//do something positive
}else
{
$this->session->set_flashdata('error', $this->lang->line('some_error'));
redirect('/');
}
}else
{
$this->form();//show form again
}
}
public function work_with_model()
{
$this->load->view('_index', array(
'model_data'=> model::method()// do all looping, html encoding, time/date parsing etc and only send back a string or an array/object ready for output
));
}
}
アプリケーション/設定/ form_validation.php
$config = array('someclass/validate'=>array(
array('field'=>'Field', 'label'=>'Label', 'rules'=>'trim|required|xss_clean|serialize')
));
ええ、私はあなたの答えに同意します。私は挿入や更新のための2つの機能を持っている方が良いと思います、1つはフォーム投稿から処理し、もう1つは必要なものだけを挿入/更新することです。すべてのデータの挿入/更新はフォームでのみ使用されますが、set userのstatus/active/activation_dateなどの場合は、柔軟な更新機能が必要な場合があります。どう思いますか? – Henson
右の音。いくつかのケースで私は複雑なモデルを構築し、アクティブなレコードクラスのようなメソッド連鎖構文を使用しました。これはコントローラコードを本当にいいものにします: '$ this-> User_model-> set_username( 'Henson') - > set_email( 'whatever @ whoever.tdm ') - > insert(); ' – Thor