0

我有一个简单的搜索表单,我想在我的 codeigniter 应用程序的多个页面中重复使用。例如,现在我在侧边栏中有一个搜索表单,我计划在索引、关于和其他页面上显示该侧边栏。

我希望在用户提交表单的同一页面上显示表单验证错误。

例如:

  1. 用户在关于页面上。
  2. 用户提交带有无效数据的表单
  3. 用户在“关于”页面的侧边栏中看到错误

  1. 用户在索引页面上。
  2. 用户提交带有无效数据的表单
  3. 用户在索引页面的侧边栏中看到错误

但我想重用该表单验证逻辑。我只是希望它在用户发布的任何页面上显示错误。

任何想法如何做到这一点?抱歉这个菜鸟问题,我对 CI 很陌生。

4

4 回答 4

1

在这里,您必须放眼全球。

Step.1:制作一个视图文件:display.php,其中包含:

    <div id = "main">
        <div id = "header">
            [load header file here]
        </div>
<?php
        if(validation_errors() != '') {
?>
            <div id = "error">
                <?=validation_errors()?>
            </div>
<?php
        }
?>
        <div id = "content">
            <?=$page?>
        </div>
        <div id = "footer">
            [load footer file here]
        </div>
    </div>

Step.2 : About us Page.(控制器)

....您的数据....

在控制器功能结束时

    $data['page'] = 'aboutus';
    $this->load->view('display',$data);
于 2012-04-09T08:55:52.827 回答
0

这是一个完全有效的问题。我不是 PHP 专家,也不是 CI 专家,但事实是有时您想要发布到未创建您发布的视图的控制器。这意味着发回自身是行不通的。

我在 Ellislab 论坛上看到了这篇文章:http: //ellislab.com/forums/viewthread/217176/

在此页面上,有 2 种方法可以解决此问题。两者都使用 flashdata 并且两者都是完全有效的,恕我直言。

第一种:创建辅助函数 http://ellislab.com/forums/viewreply/1003010/

第二种:扩展 CI_Form_Validation 类。 http://ellislab.com/forums/viewreply/1047536/

第二个是我走的路,因为它看起来最干净,尽管有些人可能会争论表单验证类是否应该知道关于闪存数据的任何事情。

于 2013-04-11T23:11:53.207 回答
0

用户指南中,有不同的方法来配置规则集/组。然后你可以简单地拥有类似的东西:

if ($this->form_validation->run('signup') == FALSE)
{
   $this->load->view('myform');
}
else
{
   $this->load->view('formsuccess');
}

这将运行您的“注册”组验证。对我来说,这是实现可重用验证规则的最简洁方式。

于 2012-04-09T14:32:36.827 回答
0

关于您对上述问题的评论,您可以使用Flash 数据

假设您已加载会话库,这里有一个辅助函数。

function last_page($page = null){
    $ci = get_instance();
    if($page === null)
        return $ci->session->flashdata('last_page');
    $ci->session->set_flashdata('last_page', $page);
}

然后你可以last_page('about');在 about 页面的顶部调用,然后当你想知道你所在的最后一页是什么时,你可以last_page();不带参数调用。

于 2012-04-09T08:30:20.473 回答