php - 多个 $this->form_validation->run() 在 codeigniter 中不起作用
问题描述
请帮助我,以验证地址。如果我选择单选按钮办公室,则需要提交办公室地址。如果我选择单选按钮 Residential,然后选择 Resi。需要提交的地址。
单选按钮名称="邮寄"
在这里我分享控制器代码:
public function addMemberForm(){
if(!$this->form_validation->run('add_form')){
$this->form_validation->set_error_delimiters('<span style="color:red">','</span>');
$this->load->view('admin_panel/add-member');
}
elseif($post['mailing'] == 'office'){
if(!$this->form_validation->run('office_address')){
$this->form_validation->set_error_delimiters('<span style="color:red">','</span>');
$this->load->view('admin_panel/add-member');
}
}
elseif($post['mailing'] == 'residential'){
if(!$this->form_validation->run('residential_address')){
$this->form_validation->set_error_delimiters('<span style="color:red">','</span>');
$this->load->view('admin_panel/add-member');
}
}
else{
$this->session->set_flashdata('add_member_msg','<span class="alert alert-success">Member insert successfully</span>');
return redirect('admin/add_member');
}
}
这里我分享 config->form_validation.php 代码:
$config = [
'add_form' =>[
[
'field' => 'mailing',
'label' => 'Mailing Address',
'rules' => 'required'
],
],
'office_address' =>[
[
'field' => 'office_address',
'label' => 'Office Address',
'rules' => 'required'
],
],
'residential_address' =>[
[
'field' => 'resi_address',
'label' => 'Residential Address',
'rules' => 'required'
],
],
];
解决方案
我在我的问题上得到了解决方案。
从 config->form_validation.php 中删除 office_address 和住宅地址
您可以在控制器中验证办公室和居住地址,请参见下面的代码:
public function addMemberForm(){
$validation_error = array();
if(!$this->form_validation->run('add_form')){
$validation_error[] = $this->form_validation->set_error_delimiters('<span style="color:red">','</span>');
}
elseif($this->input->post('mailing') == 'office'){
$this->form_validation->set_rules('office_address','Office Address','required');
if($this->form_validation->run() == false){
$validation_error[] = $this->form_validation->set_error_delimiters('<span style="color:red">','</span>');
}
}
elseif($this->input->post('mailing') == 'residential'){
$this->form_validation->set_rules('resi_address','Residential Address','required');
if($this->form_validation->run() == false){
$validation_error[] = $this->form_validation->set_error_delimiters('<span style="color:red">','</span>');
}
}
if(count($validation_error)){
$this->load->view('admin_panel/add-member');
}
else{
$this->session->set_flashdata('add_member_msg','<span class="alert alert-success">Member insert successfully</span>');
return redirect('admin/add_member');
}
}
推荐阅读
- sql - 按客户分组并在 SQL 中计算总和并返回前 15 名
- android - 使用协程的带有水平进度条的启动画面
- javascript - 在头部使用没有 Script 标签的 jQuery
- apache-spark - Spark没有从文件夹中加载所有文件
- eclipse - Eclipse 中的深色模式会更改下拉菜单文本的颜色,使其不可读。我该如何解决?
- flutter - Flutter:打开键盘时使文本部分可见
- bash - 避免在存储命令和函数输出的脚本上捕获输入
- flutter - 没有调用 Dispose
- richtext - 寻找与 react-final-form 集成的富文本编辑器
- google-cloud-platform - 使用 Pulumi 在 GCP 上设置负载均衡器前端