我很困惑在哪里把表单验证在胖模型和瘦控制器方法在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' => '')
希望这对你有帮助!