Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 如何在多个页面上重用codeigniter表单_Forms_Codeigniter_Validation - Fatal编程技术网

Forms 如何在多个页面上重用codeigniter表单

Forms 如何在多个页面上重用codeigniter表单,forms,codeigniter,validation,Forms,Codeigniter,Validation,我有一个简单的搜索表单,我想在我的codeigniter应用程序中跨多个页面重用它。例如,现在我在侧边栏中有一个搜索表单,我计划在索引、关于和其他页面上显示侧边栏 我希望表单验证在用户提交表单的同一页面上显示错误 例如: 用户位于关于页面上 用户提交的表单包含无效数据 用户在“关于”页面的侧栏中看到错误 及 用户位于索引页上 用户提交的表单包含无效数据 用户在索引页的侧栏中看到错误 但是我想重用表单验证逻辑。我只想让它在用户发布的任何页面上显示错误 有什么办法吗?很抱歉,我不熟悉CI。关于您对上

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

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

例如:

  • 用户位于关于页面上
  • 用户提交的表单包含无效数据
  • 用户在“关于”页面的侧栏中看到错误
  • 用户位于索引页上
  • 用户提交的表单包含无效数据
  • 用户在索引页的侧栏中看到错误
  • 但是我想重用表单验证逻辑。我只想让它在用户发布的任何页面上显示错误


    有什么办法吗?很抱歉,我不熟悉CI。

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

    假设您已经加载了会话库,下面是一个helper函数

    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_页面('about')”,然后当您想知道您上一页的内容时,可以调用
    last_page()没有参数。

    在这里,您必须全局思考

    步骤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>
    
    在中,有不同的方法来配置规则集/规则组。然后,您可以简单地进行如下操作:

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

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

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

    我在Ellisab论坛上看到了这篇帖子:

    在这一页上,有两种方法。两者都使用flashdata,而且都是完全有效的,IMHO

    第一:创建一个helper函数

    第二:扩展CI_表单_验证类。

    第二个是我的方式,因为它看起来是最干净的,尽管有些人可能会争论表单验证类是否应该知道关于flash数据的任何信息

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