我在我的Add控制器的索引操作上加载我的表单,并将该表单发布到同一控制器的submit_post操作。我想要的是,如果帖子数据不满足验证,那么它应该重定向到索引操作,只返回渲染我的表单并保持表单字段填充已发布的值,并且我将能够获得每个这里单独的字段错误是我的控制器操作
class Add extends CI_Controller {
private $view = "";
public function __construct()
{
parent::__construct();
$this->view = "add";
}
public function index()
{
$this->load->view("frontend/default", array("view" => $this->view));
}
public function submit_post()
{
$this->form_validation->set_rules('description', 'Description', 'required');
$this->form_validation->set_rules('name', 'Name', 'required');
if ($this->form_validation->run() == FALSE)
{
redirect('/add');
}
else
{
echo "Validated";
}
}
}
我已经阅读了很多博客和stackoverflow问题,发现这可以通过set_flashdata来实现。好吧,我做到了,并且能够完全打印所有错误。
答案 0 :(得分:2)
问题在于行redirect('/add');
通过重定向,将重新加载验证类,并且form_validation->run()
期间收集的所有信息都将丢失。
这是我推荐的代码
if ($this->form_validation->run() == FALSE)
{
$this->index();
}
else
{
echo "Validated";
}
答案 1 :(得分:0)
您应该在配置文件中添加form_validation $ autoload ['libraries'] = array('form_validation')。 然后如果你想单独显示错误,你应该把它放在每个输入字段下的html中:
<?php echo form_error('your fieldname');?>