【问题标题】:Check form data - in model or in controller?检查表单数据 - 在模型中还是在控制器中?
【发布时间】:2010-12-05 15:50:20
【问题描述】:

在 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 并且用户已登录? 怎么做?

最好的,基里尔。

【问题讨论】:

标签: php codeigniter model controller weblogic


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2013-10-12
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 2013-12-01
    • 2016-08-24
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多