Codeigniter重新填充表单数据并使用重定向单独获取验证错误

时间:2016-04-22 08:46:31

标签: forms codeigniter redirect

我在我的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来实现。好吧,我做到了,并且能够完全打印所有错误。

2 个答案:

答案 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');?>