【问题标题】:codeigniter form validation and multiple views accessing same functioncodeigniter 表单验证和访问相同功能的多个视图
【发布时间】:2014-01-15 22:05:24
【问题描述】:

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

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

【问题讨论】:

    标签: php codeigniter validation


    【解决方案1】:

    你的问题很难理解,所以我会尝试通过解决更高级别的问题来提供帮助。

    我有 3 个不同的视图,它们必须从同一个控制器访问同一个函数来验证它们的表单

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

    有没有办法在不实际调用视图的情况下将用户送回视图?

    您不调用视图,而是调用控制器,控制器依次加载视图(通过输出缓冲区)。如果您只想从视图加载 HTML,只需将 false 的第三个参数传递给 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。

    【讨论】:

    • 我明白这一切。我已经完成了所有这些工作。我想要完成的主要事情是,当验证通过或失败时,有一种方法可以调用$this->load->view('the referring views name here'),而不是$this->load->view('the referring views name here'),因为有许多不同级别的验证正在进行,检查数据库是否信息,检查验证规则等...。不只是简单的通过失败。再次一切正常,只是试图将 100 行代码减少到 33 行
    • 很抱歉,引用视图名称将是一个变量,而不是硬编码。这是我想要完成的主要任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 2022-08-18
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    相关资源
    最近更新 更多