我应该在脂肪模型和瘦控制器方法的codeigniter中将表单验证放在哪里?

时间:2014-07-30 10:05:49

标签: php codeigniter

我对在codeigniter中将表单验证放在胖模型和瘦控制器方法中的位置感到困惑。我想分离业务逻辑。是否包括破坏业务逻辑分离的表单验证?

1 个答案:

答案 0 :(得分:0)

我个人会保留你的模型中的form_validation,但是,你不必将所有规则都放在控制器中。

<强>应用/配置/ form_validation.php

<?php

    //array('field' => '', 'label' => '', 'rules' => '')
    function arrayf($field, $label, $rules)
    {
        return array('field' => $field, 'label' => $label, 'rules' => $rules);
    }

    $config = array(
        'recipients/add' => array(
            arrayf('title', 'Title', 'required|trim|min_length[3]'),
            arrayf('description', 'Description', 'min_length[10]'),
            arrayf('amount', 'Amount', 'required|numeric'),
            arrayf('date', 'Date', 'required|valid_date'),
        ),
        'recipients/delete' => array(
            arrayf('id', 'Id', 'required'),
            arrayf('confirm', 'Confirm', 'required'),
        ),
    );

以上是一个基本的例子。

然后在您的控制器中,您将拥有:

    if ($this->form_validation->run('recipients/add') !== FALSE) {
        //Do whatever
    }

注意第一个验证组与传递给

的param具有相同的索引

$this->form_validation->run('recipients/add')

这样,您可以在不同的控制器中使用相同的验证规则,而无需再将它们全部写出来。

注意

函数arrayf()用于格式化数组,因为否则你必须用数组键写出每个验证规则,例如 array('field' => '', 'label' => '', 'rules' => '')

希望这有帮助!