2011-05-04 93 views
1

处理表单提交请告诉我来处理笨以下情况的最好办法:笨 - 从不同的控制器动作

首页控制器具有指标作用,并提交操作。

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

什么是最好的方式做到这一点 - 没有索引控制器处理主页面加载和表单提交。

回答

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()); 
+0

帮了我很多。 – hairynuggets 2011-11-15 13:57:30

+0

所以如果我有一个控制器来处理注册,我应该有一个if-else在数据发布的地方,然后处理注册细节。否则,只需加载注册表单? – 2013-03-11 06:33:02

0

只需在您提交的行动指向您的形式:

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

然后,使用submit行动之前验证您的输入回index行动。

+0

是的,但我如何获得表单验证错误和消息等回到主索引控制器准备好再次加载主页面。 – David 2011-05-04 20:52:41

+0

我编辑了我的答案,希望能够解决这个问题。 – 2011-05-04 20:55:30

+0

那么你是否建议如果我的提交动作验证失败,那么我仍然可以使用<?php echo validation_errors(); ?>从索引操作中获取验证错误? – David 2011-05-04 20:57:21