Codeigniter - 处理来自不同控制器操作的表单提交

时间:2011-05-04 20:35:45

标签: php codeigniter

在codeigniter中处理以下情况的最佳方法是什么:

家庭控制器具有索引操作和提交操作。

提交操作用于表单提交。我想通过索引控制器加载页面 - 包括表单提交后,即表单错误数据,以便在错误时重新填充表单输入等。

这是最好的方法 - 没有索引控制器处理主页面加载和表单提交。

2 个答案:

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

或者,您可以设置indexsubmit控制器,并让它们指向相同的视图,该视图会检测是否设置了validation_errors()并相应地重新填充表单字段

第三个选项(hackish):您可以使用flashdata将提交错误和提交的表单值重定向到索引。像这样的东西会起作用:

$this->session->set_flashdata('errors', $validation_errors());

答案 1 :(得分:0)

只需在提交动作中指明您的表单:

<form method="post" action="/home/submit">

然后,使用submit操作在redirecting返回index操作之前验证您的输入。