Php 在Codeigniter框架中组织表单代码的位置

Php 在Codeigniter框架中组织表单代码的位置,php,forms,codeigniter,model,controller,Php,Forms,Codeigniter,Model,Controller,我在Codeigniter中读到,我应该通过将验证代码放入控制器和验证规则/默认值放入模型来组织表单代码 这仅仅是通过在我的模型中创建一个如下所示的函数,然后从我的控制器内部调用它们来实现的吗?它当然可以保持控制器干净,但我想确保这是组织事情的正确方式 //inside widget_model.php function myRules() { $this->form_validation->set_rules('item_name', 'name', 'required'

我在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'
    );
}

你不必那么做。 最好的方法是在控制器中设置验证规则,如下所示:

$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');
}
}

你不需要在你的模型里放任何东西

有关此主题的更多信息,请参见:

另一个选项是按集合放置您的订单。CI将自动加载这些文件(如果名称正确)。

谢谢Andrey。仅仅为了建立一个“瘦控制器,胖模型”,就这样将其分离到模型中似乎有点奇怪。我只是想听听另一位更有经验的开发人员说,将验证内容放在控制器中并不是一种糟糕的做法。