如何在表单验证后重新填充表单并保留URI?

时间:2014-01-29 22:28:22

标签: codeigniter uri

我在验证失败后重新填充表单时遇到问题。问题是我的网址包含一个额外的uri,我通过点击链接访问该网址。这就是它的样子:

http://www.example.com/admin/trivia/add/5

起初问题是uri的第4段完全消失了,所以即使验证错误显示并且表格重新填充,我也丢失了我添加的uri。

然后我在另一个问题中发现解决方案是将表单设置为打开:

echo form_open(current_url());

现在问题是它没有显示任何验证错误,并且表格没有重新填充。有没有办法实现这个目标?

这就是我的控制器的样子:

function add()
{       
    $data = array('id' => $this->uri->segment(4));

    if($_POST)
    {
        $this->_processForm();  
    }

    $this->load->view('admin/trivia_form', $data);
}

在_processForm()中,我获得了所有验证规则,错误消息,并在成功的情况下重定向。

[edit]这是我的_processForm():

function _processForm()
{       
    $this->load->library('form_validation');

    //validation rules go here
    //validation error messages

    $this->form_validation->set_rules($rules);
    $this->form_validation->set_error_delimiters('<div style="color:red">', '</div>');

    if ($this->form_validation->run())
    {
        //get input from form and assign it to array            
        //save data in DB with model
        if($this->madmin->save_trivia($fields)) 
        {
            //if save is correct, then redirect 
        }
        else 
        {
            //if not show errors, no redirecting.
        }   

    }//end if validation
}

3 个答案:

答案 0 :(得分:1)

要保持相同的网址,您可以在同一控制器功能中执行所有操作。

在您的控制器中

function add($id)
{
   if($this->input->server('REQUEST_METHOD') === 'POST')// form submitted
   {
      // do form action code
      // redirect if success


   }

   // do your actual stuff to load. you may get validation error in view file as usual if validation failed

}

答案 1 :(得分:0)

重新填充您需要的表单字段,在将其作为exampled here提交时重置字段值,并打开它,打开同一页面,您可以使用redirect()函数,如下所示:

redirect('trivia/add/5','refresh');

答案 2 :(得分:0)

我不知道你要做什么,但是尝试用表格用户输入的值重新填充表格

<?php
      echo form_input('myfield',set_value('myfield'),'placeholder="xyz"');
?>