Php 配置中的Codeigniter表单验证取决于另一个输入
我正在使用Codeigniter表单验证配置(而不是手动设置规则)。我需要的是根据其他字段设置所需规则。例如,假设我们有以下规则:Php 配置中的Codeigniter表单验证取决于另一个输入,php,codeigniter,Php,Codeigniter,我正在使用Codeigniter表单验证配置(而不是手动设置规则)。我需要的是根据其他字段设置所需规则。例如,假设我们有以下规则: 'user' => array( array( 'field' => 'user[phone]', 'rules' => 'required' ), array( 'field' => 'user[email]', ), array( 'f
'user' => array(
array(
'field' => 'user[phone]',
'rules' => 'required'
),
array(
'field' => 'user[email]',
),
array(
'field' => 'user[foo]',
//'rules' => 'required'
)
),
必须根据email
字段要求输入foo
注意:这可以通过回调函数来完成,但在大型应用程序中会有点困难。有什么想法吗?在您的
APPPATH.config/form\u 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]',
)
),
);
,然后在控制器中使用所需的任何规则集。举例来说
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.
}
更多信息。您可以使用javascript或jQuery编写自定义验证。@jagad89我已经通过
Angularjs
实现了js验证。这是关于服务器端验证的。如果您使用CI 3.x,请看一看,谢谢。但是,anonymous
函数可能是比这更好的解决方案。这段代码正在实现现有的CodeIgniter资源/结构。回调函数是另一种方式。你可以用任何你想用的方式。