【问题标题】:Codeigniter form validation using bootstrap tab views使用引导选项卡视图进行 Codeigniter 表单验证
【发布时间】:2015-11-14 23:33:24
【问题描述】:

可能很明显,我看不到哪里出了问题。也许这是我误解的逻辑。我搜索了很多,我发现的所有内容都只涉及选择正确标签的导航问题。

我在平台 codeigniter v2.2.3 上使用 PHP 开发了一个相当大的网站。它使用表格、表格验证和偶尔的一些 jQuery(主要用于可视化)。所以我知道模型、控制器、视图系统是如何工作的,甚至是表单验证和错误显示、重新填写表单等。

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

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

问题:我正在寻找在出现表单验证错误时如何正确显示重新打开的表单...

screendump of tabs with form

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

构建标签:

初始控制器测试选项卡:

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

初始视图testtab_view:(页脚和页眉加载所有默认通用jquery,引导逻辑)

<?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'); ?>

表格

测试表单控制器:

<?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>

【问题讨论】:

    标签: forms twitter-bootstrap codeigniter validation


    【解决方案1】:
    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-&gt;session-&gt;flashdata('validation_errors');检查是否设置。

    【讨论】:

    • 感谢您的指点。似乎我想念你的最后一句话该怎么办。我总是在表单上的重新加载循环中结束,或者相同的选项卡集显示两次。如果我检查测试表单控制器中的错误以显示视图或重定向它正确显示但与我的问题相同的问题。想法?
    猜你喜欢
    • 1970-01-01
    • 2020-12-11
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    相关资源
    最近更新 更多