2015-11-14 71 views
0

可能是某些顯而易見的事情,我無法看到它出錯的地方。也許它是我誤解的邏輯。我搜索了很多,我發現的一切只處理導航問題選擇適當的選項卡。使用引導選項卡視圖進行Codeigniter表單驗證

我在平臺codeigniter v2.2.3上使用PHP開發了一個相當大的站點。它使用FORMS,FORM驗證和一些jQuery(主要用於可視化)。所以我知道模型,控制器,查看系統是如何工作的,即使表單驗證和錯誤顯示,補充形式等

問題:我有一個後端,其中一些控制器提供的數據我在幾個主題,並讓我使用簡單的PHP/CI表單進行更改。我想將這些現在從交換機/一個頁面啓動的各種控制器與TABS集成到一個頁面中。所以我可以使用標籤視圖。主要是一個選項卡鏈接到一個控制器。

我可以顯示選項卡,用控制器/視圖中的數據填充它。我還可以在選中時在選項卡上顯示錶單。 但是:當我提交表單時,我的視圖脫離了TABBED視圖。發生錯誤時也是如此。我不想將所有驗證邏輯重新編碼到jquery中。該網站太大了。

問:我期待如何正確顯示重新形式當有表單驗證錯誤...

screendump of tabs with form

下方的「邏輯」。 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,引導程序邏輯)

<?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
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');檢查如果這些被設置。

+0

感謝您的指點。似乎我很想念你最後一句話怎麼辦。我一直在窗體上的重載循環中結束,或者顯示兩次相同的tabset。如果我檢查testform控制器中的錯誤,以顯示視圖或重定向它顯示正確,但與我的問題相同的問題。想法? – ALchEmiXt

相關問題