我正在通过配置使用 Codeigniter 表单验证(而不是手动设置规则)。我需要的是根据其他字段设置所需的规则。例如,假设我们有以下规则:
'user' => array(
array(
'field' => 'user[phone]',
'rules' => 'required'
),
array(
'field' => 'user[email]',
),
array(
'field' => 'user[foo]',
//'rules' => 'required'
)
),
foo
输入必须基于 email
字段。
注意:可以通过回调函数来完成,但这在大型应用程序中有点困难。有什么想法吗?
最佳答案
在您的 APPPATH.'config/form_validation.php'
文件中设置分隔的规则数组
$config = array(
'yes_email' => array(
array(
'field' => 'user[phone]',
'rules' => 'required'
),
array(
'field' => 'user[email]',
),
array(
'field' => 'user[foo]',
'rules' => 'required'
)
),
'no_email' => array(
array(
'field' => 'user[phone]',
'rules' => 'required'
),
array(
'field' => 'user[email]',
),
array(
'field' => 'user[foo]',
)
),
);
,然后在 Controller 中使用您想要的任何规则集。在示例中
if ($this->form_validation->run($rule) == FALSE) {
$this->load->view('myform');
} else {
$this->load->view('formsuccess');
}
在此检查之前,您应该确定需要什么规则,例如:
$rule = 'no_email'; // set default value
switch($this->input->post('email')) {
case false:
break;
default:
$rule = 'yes_email'; // email has been posted / needed by app etc.
}
更多内容请参见 docs .
关于php - 配置中的 Codeigniter 表单验证取决于另一个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43917069/