【发布时间】:2011-08-18 20:56:36
【问题描述】:
在codeigniter中处理以下情况的最佳方法是什么:
Home 控制器有一个 index 动作和一个 submit 动作。
提交操作用于表单提交。我想通过索引控制器加载页面 - 包括在表单提交之后,即使用表单错误数据重新填充表单输入错误等。
最好的方法是什么 - 无需索引控制器处理主页加载和表单提交。
【问题讨论】:
标签: php codeigniter
在codeigniter中处理以下情况的最佳方法是什么:
Home 控制器有一个 index 动作和一个 submit 动作。
提交操作用于表单提交。我想通过索引控制器加载页面 - 包括在表单提交之后,即使用表单错误数据重新填充表单输入错误等。
最好的方法是什么 - 无需索引控制器处理主页加载和表单提交。
【问题讨论】:
标签: php codeigniter
如果您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());
【讨论】:
只需将您的表单指向您的提交操作:
<form method="post" action="/home/submit">
然后,使用submit 操作在redirecting 返回index 操作之前验证您的输入。
【讨论】:
index 操作。如果您尝试这样做只是为了避免“重新提交以刷新”问题,那么简单的解决方案是简单地处理 index 操作上的提交,并在您完成处理后将用户重定向到 index该输入(同样,使用会话闪存或获取参数来传递该信息)。