Php 重定向到同一页面时,codeigniter中未显示表单验证错误
我的网站有多个页面,每个页面都包含页脚。我有一个联系我们的表格在我的网站页脚。当用户用有效值填充表单时,它应发送邮件并返回到同一页面,但如果用户提交表单时未填充任何字段,则当前页面应加载错误消息。我已经自动加载表单验证、会话库和表单以及url助手 以下是我的看法:Php 重定向到同一页面时,codeigniter中未显示表单验证错误,php,codeigniter,redirect,controller,logic,Php,Codeigniter,Redirect,Controller,Logic,我的网站有多个页面,每个页面都包含页脚。我有一个联系我们的表格在我的网站页脚。当用户用有效值填充表单时,它应发送邮件并返回到同一页面,但如果用户提交表单时未填充任何字段,则当前页面应加载错误消息。我已经自动加载表单验证、会话库和表单以及url助手 以下是我的看法: <form action="<?php echo site_url('main/contactMail')?>" method="post" class="wpcf7-form" novalidate
<form action="<?php echo site_url('main/contactMail')?>" method="post" class="wpcf7-form" novalidate="novalidate">
<input type="hidden" value="<?php echo current_url();?>" name="url">
<label for="your-name"> Full Name</label> <input type="text" name="your-name" />
<label for="your-email"> Email*</label> <input type="email" name="your-email" />
<label for="phonenumber">Phone Number *</label> <input type="tel" name="phonenumber" />
<label for="textarea"> Message </label><textarea name="textarea" cols="40" rows="2">
</textarea></div>
<input type="submit" value="Send" class="wpcf7-form-control wpcf7-submit square-button material-btn" />
<?php echo validation_errors();?>
</form>
当用户提交表单而不填写表单时,当前页面正在加载,但不会显示错误。您需要在构造函数中加载库:
$this->load->library('form_validation');
$url = $this->input->post('url');
$this->form_validation->set_rules('your-name','Name','required|alpha_numeric_spaces');
$this->form_validation->set_rules('your-email','Email','required|valid_email');
$this->form_validation->set_rules('phonenumber','Mobile','required|numeric');
$this->form_validation->set_rules('textarea','Text', 'required');
if($this->form_validation->run() == FALSE)
{
$this->session->set_flashdata('error', validation_errors());
redirect($url);
}
在希望接收错误或消息的控制器函数中,可以将它们设置为$data数组,如下所示:
if (!empty($this->session->flashdata('message'))) {
$data['message'] = $this->session->flashdata('message');
} elseif (!empty($this->session->flashdata('error'))) {
$data['error'] = $this->session->flashdata('error');
}
<?php
if (isset($message)) {
echo '<p class="alert alert-info">'.$message.'</p>';
} elseif (isset($error)) {
echo '<p class="alert alert-danger"><strong>Error: </strong>'.$error.'</p>';
}
?>
if(!empty($this->session->flashdata('message')){
$data['message']=$this->session->flashdata('message');
}elseif(!empty($this->session->flashdata('error')){
$data['error']=$this->session->flashdata('error');
}
将此设置放在控制器的构造函数上:
$this->load->library('form_validation');
在视图中,在DOM或HTML元素的顶部写下以下内容:
<?php echo validation_errors(); ?>
<?php echo validation_errors(); ?>