codeigniter表单验证和访问相同功能的多个视图

时间:2014-01-15 22:05:25

标签: php codeigniter validation

我有3个不同的视图,必须从同一个控制器访问相同的函数来验证它们的表单。在我的验证函数中,如果验证在各个步骤失败,它会向函数中列出的视图发回一条消息。问题是我必须有三个不同的函数,只是使用不同的返回视图做同样的事情。在codeigniter中是否有任何方法可以将用户发送回带有数据的视图而无需调用实际视图,可能是$this -> load -> view('$this_referring_view);选项。我似乎找不到通过引用视图的变量。

if ($this -> form_validation -> run() == FALSE) {
    $data['failMsg2'] = "failed";
    $this -> load -> view('home', $data);
} else …

1 个答案:

答案 0 :(得分:0)

您的问题很难理解,因此我会尝试通过达到更高级别的问题来提供帮助。

  

我有3个不同的视图,必须从同一个控制器访问相同的功能才能验证其形式

然后,您应该将该验证移动到包含新验证规则的扩展form_validation类中。

  

有没有办法将用户发送回视图而不实际调用视图?

您不调用视图,而是调用控制器,控制器又加载视图(通过输出缓冲区)。如果您只想从视图中加载HTML,只需将false的第3个参数传递给view()方法。

$html = $this->load->view('view', $data, FALSE);

典型的表单验证过程如下:

if ($this->form_validation->run() === FALSE) {
  // Form validation failed, either because it's an initial laod
  // or because they actually failed to pass validation
  $this->load->view('view', $data);   
}

// Form validation has passed, redirect the user
redirect('view');

任何错误消息都将由表单验证类直接设置,而不是由于验证失败(因为这将在初始加载时发生)。

注意:带上一些盐的实际代码示例,我多年没有碰过CodeIgniter。