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

时间:2012-04-08 19:44:17

标签: forms codeigniter validation

我有一个简单的搜索表单,我希望在我的codeigniter应用程序中的多个页面中重用。例如,现在我在侧边栏中有一个搜索表单,我打算在索引,关于和其他页面上显示该侧边栏。

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

例如:

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

      任何想法如何做到这一点?对于noob问题我很抱歉,我对CI很新。

4 个答案:

答案 0 :(得分: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 :关于我们Page。(控制器)

....你的数据......

在控制器功能结束时

    $data['page'] = 'aboutus';
    $this->load->view('display',$data);

答案 1 :(得分:0)

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

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

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

然后你可以在about页面的顶部调用last_page('about');,然后当你想知道你所在的最后一页是什么时,你就可以在没有params的情况下调用last_page();。 / p>

答案 2 :(得分:0)

User Guide中,有不同的方法来配置规则集/组。然后你可以简单地得到类似的东西:

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

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

答案 3 :(得分:0)

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

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

在此页面上,有两种方法可以实现。两者都使用flashdata,两者都是完全有效的,恕我直言。

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

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

第二种是我走的路,因为它似乎最干净,尽管有些人可能会争论表单验证类是否应该知道有关闪存数据的任何信息。