我应该把我的表单验证在胖模型和瘦控制器方法的编码器


Where should I put my form validation in codeigniter in fat model and thin controller approach?

我很困惑在哪里把表单验证在胖模型和瘦控制器方法在codeigniter。我想要分离业务逻辑。包括表单验证是否破坏了业务逻辑分离?

我个人会把你的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
    }

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

的参数具有相同的索引

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

这样你就可以在不同的控制器中使用相同的验证规则,而不需要把它们都写出来。

注意

函数arrayf()用于格式化数组,否则您将不得不使用数组键写出每个验证规则,例如:array('field' => '', 'label' => '', 'rules' => '')

希望这对你有帮助!