使用引导选项卡视图进行Codeigniter表单验证

时间:2015-11-14 23:33:25

标签: forms twitter-bootstrap codeigniter validation

可能显而易见的是,我没有看到它出错的地方。也许这是我误解的逻辑。我搜索了很多,我发现的所有内容都只涉及选择正确标签的导航问题。

我在平台codeigniter v2.2.3上使用PHP开发了一个相当大的站点。它使用FORMS,FORM验证和偶尔使用一些jQuery(主要用于可视化)。所以我知道Model,Controller,View系统如何工作,甚至可以作为表格验证和错误显示,填写表格等。

问题:我有一个后端,其中一些控制器为我提供了几个主题的数据,并允许我使用简单的PHP / CI表单进行更改。我想将现在从交换机/一页启动的各种控制器与TABS集成到一个页面中。所以我可以使用选项卡式视图。主要是一个链接到一个控制器的选项卡。

我可以显示标签,用控制器/视图中的数据填充它。我也可以在选中时在选项卡上显示表单。 但是:当我提交表单时,我的视图突破了TABBED视图。生成错误时也是如此。我不想将所有验证逻辑重新编码为jquery。该网站太大了。

问题:我正在查看在有表单验证错误时如何正确显示重新打开的表单...

screendump of tabs with form

低于“逻辑”。完整的代码(一个独立的用户名,电子邮件示例)可以在我的公共bitbucket repo中找到:https://bitbucket.org/ALchEmiXt/ci-tab-test

构建标签:

初始控制器testtab:

<?php
class Testtab extends CI_Controller {
    function index()
    {
        $this->data['welcome'] = 'Welcome tester!';
        $this->load->view( 'testtab_view', $this->data );
    }
}
?>

初始视图testtab_view :(页脚和标题加载所有默认的通用jquery,bootstrap逻辑)

<?php $this->load->view('header_testform'); ?>

<ul class="nav nav-tabs" id="uvpbTabs">
    <li class="active"><a data-toggle="tab" href="#home">Home</a></li>
    <li><a data-toggle="tab" href="#form1" data-tab-url="testform">formtesting</a></li>
    <li><a data-toggle="tab" href="#stats">Stats</a></li>
    <li><a data-toggle="tab" href="#admin">Admin</a></li>
</ul>

<!-- The data and views come here -->       
<div class="tab-content" id="all-tabs">

    <div id="home" class="tab-pane fade in active"><h3><?php echo $welcome ?></h3></div>

    <div id="form1" class="tab-pane fade"></div>
    <div id="stats" class="tab-pane fade"><h3>Stats of the pages</h3></div>
    <div id="admin" class="tab-pane fade"><h3>Admin stuff</h3></div>

</div>

<?php $this->load->view('footer_testform'); ?>

表格

testform控制器:

<?php
class Testform extends CI_Controller {
    function index()
    {
        $this->load->helper(array('form', 'url'));

        $this->load->library('form_validation');

        $this->form_validation->set_rules('username', 'Username', 'required');
        $this->form_validation->set_rules('email', 'Email', 'required|valid_email');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('testtabform_view');
        } else {
            $this->load->view('testform_succes');
        }
    }
}
?>

testtabform_view

<div id="formcontainer">
    <?php echo validation_errors(); ?>

    <?php echo form_open('testform'); ?>

    <h3>TestTabForm_view</h3>

    <h5>Username</h5>
    <input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />

    <h5>Email Address</h5>
    <input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />

    <div><input type="submit" value="Submit" /></div>

    </form>
</div>

1 个答案:

答案 0 :(得分:0)

if ($this->form_validation->run() == FALSE)
}
//  $this->load->view('testtabform_view');
    $this->session->set_flashdata('validation_errors', validation_errors());
    redirect('testtab');
}
else
{
    $this->load->view('testform_succes');
}

然后控制$this->session->flashdata('validation_errors');检查是否已设置。