可能显而易见的是,我没有看到它出错的地方。也许这是我误解的逻辑。我搜索了很多,我发现的所有内容都只涉及选择正确标签的导航问题。
我在平台codeigniter v2.2.3上使用PHP开发了一个相当大的站点。它使用FORMS,FORM验证和偶尔使用一些jQuery(主要用于可视化)。所以我知道Model,Controller,View系统如何工作,甚至可以作为表格验证和错误显示,填写表格等。
问题:我有一个后端,其中一些控制器为我提供了几个主题的数据,并允许我使用简单的PHP / CI表单进行更改。我想将现在从交换机/一页启动的各种控制器与TABS集成到一个页面中。所以我可以使用选项卡式视图。主要是一个链接到一个控制器的选项卡。
我可以显示标签,用控制器/视图中的数据填充它。我也可以在选中时在选项卡上显示表单。 但是:当我提交表单时,我的视图突破了TABBED视图。生成错误时也是如此。我不想将所有验证逻辑重新编码为jquery。该网站太大了。
问题:我正在查看在有表单验证错误时如何正确显示重新打开的表单...
低于“逻辑”。完整的代码(一个独立的用户名,电子邮件示例)可以在我的公共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>
答案 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');
检查是否已设置。