【问题标题】:Where to organize form code in Codeigniter framework在 Codeigniter 框架中组织表单代码的位置
【发布时间】:2010-12-27 00:17:08
【问题描述】:

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

【问题讨论】:

    标签: php forms codeigniter model controller


    【解决方案1】:

    恕我直言,您不需要这样做。 最好的方法是在控制器中设置验证规则,如下所示:

    $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

    【讨论】:

    • 谢谢安德烈。仅仅为了建立一个“瘦控制器,胖模型”而将它像这样分离到模型中似乎有点奇怪。我只是想听听另一位更有经验的开发人员说,将验证内容放在控制器中并不是一个坏习惯。
    【解决方案2】:

    另一种选择是将您的validation rules in a config file 按集合排序。 CI 会自动加载这些(如果命名正确的话)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多