我在验证失败后重新填充表单时遇到问题。问题是我的网址包含一个额外的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
}
答案 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"');
?>