我对在codeigniter中将表单验证放在胖模型和瘦控制器方法中的位置感到困惑。我想分离业务逻辑。是否包括破坏业务逻辑分离的表单验证?
答案 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' => '')
希望这有帮助!