检查表格数据 - 在模型中还是在控制器中?

时间:2010-12-05 15:50:21

标签: php codeigniter model controller weblogic

在CodeIgniter 中,我有这样的模型和控制器,用于使用AJAX发布评论

模型:

class Items_model extends Model {
function add_comment($item_id, $user_id, $text, $type)
    {
        $data = array(
            'item_id' => $item_id,
            'user_id' => $user_id,
            'text' => $text,
            'type' => $type,
            'created_at' => mktime()
        );
        $this->db->insert('comments', $data); 
        return $this->db->insert_id();
    } 

控制器:

class Items extends Controller {
function add_comment() 
    {
        $this->load->helper('date');

        $item_id = $this->input->post('item_id', TRUE);
        $text = $this->input->post('comment_text', TRUE);
        $type = $this->input->post('type', TRUE);

        $user_id = $this->session->userdata('user_id'); // user id, must be logged in

        $this->Items_model->add_comment($item_id, $user_id, $text, $type);
        $response = array(
            'message' => 'Thank you!'
        );
        echo json_encode($response);
    } 

在控制器或模型中,我应该从表单控制该数据:$ item_id和$ text不为空,设置了$ user_id并且用户已登录? 怎么样?

最好,基里尔。

2 个答案:

答案 0 :(得分:2)

我会在控制器级别进行验证,然后在您自己工作的情况下在模型级别设置默认值。理想情况下,您可以在每个级别进行验证和错误处理,甚至在客户端进行一些验证。在大型项目中,可能是一个开发人员正在构建模型而另一个正在构建控制器。如果每个都在他们自己的级别进行验证,那么它不仅会使应用程序更安全,而且会让每个人都知道他们正在正确地访问这些函数,等等。

答案 1 :(得分:1)

This person(在CodeIgniter论坛上)不同意,说你应该将数据清理到处理,而不是传递的地方。这对我来说很有意义,因为它只需要在一个地方发生,而不是在每个可能使用该模型的控制器中发生。