在codeigniter中处理以下情况的最佳方法是什么:
家庭控制器具有索引操作和提交操作。
提交操作用于表单提交。我想通过索引控制器加载页面 - 包括表单提交后,即表单错误数据,以便在错误时重新填充表单输入等。
这是最好的方法 - 没有索引控制器处理主页面加载和表单提交。
答案 0 :(得分:3)
如果您redirect()
,您将无法使用set_value()
重新填充表单字段。
最简单的方法是让索引控制器处理默认的加载行为和提交。
function index()
{
if($this->input->post('foo'))
{ // something was POSTed
$this->load->library('form_validation');
//validation rules
} else
{ // normal view
//
}
$this->load->view('home');
}
或者,您可以设置index
和submit
控制器,并让它们指向相同的视图,该视图会检测是否设置了validation_errors()
并相应地重新填充表单字段
第三个选项(hackish):您可以使用flashdata将提交错误和提交的表单值重定向到索引。像这样的东西会起作用:
$this->session->set_flashdata('errors', $validation_errors());
答案 1 :(得分:0)
只需在提交动作中指明您的表单:
<form method="post" action="/home/submit">
然后,使用submit
操作在redirecting返回index
操作之前验证您的输入。