2011-04-27 46 views
6

在我的一個網站上,我有一個頁面上的2個表單,我有一個問題,基本上是發生了什麼,是我正在檢查的錯誤之一的形式如果有任何錯誤,我正在做一些樣式來將標籤變成紅色,另一種形式如何使用echo validation_errors();顯示錯誤。當我提交不顯示錯誤的表單時,僅在表單中顯示錯誤樣式驗證錯誤。我怎樣才能阻止呢?Codeigniter 2形式在一個頁面上,validation_errors問題

回答

23

你的問題是有點難以閱讀,但如果我理解正確的話 - 你無法驗證從一個控制器2種單獨的形式,或者處理使用validation_errors()來自不同形式的錯誤問題,據我所知,其打印所有錯誤:

在運行驗證之前,請檢查是否存在隱藏字段,表單唯一的字段,或者您可以檢查特定提交按鈕的值。在你看來

<?php 
// Choose one: 
if ($this->input->post('form1')): // check the hidden input 
if ($this->input->post('form1_email')): // OR check a unique value 
if ($this->input->post('submit') == 'Submit Form 1'): // OR check the submit button value 

    if ($this->form_validation->run()): 

     // process form 

    else: 
      // Create a variable with errors assigned to form 1 
      // Make sure to pass this to your view 
      $data['form1_errors'] = validation_errors(); 
    endif; 

endif; 
// Do same for form 2 

然後,而不是使用validation_errors()你:

<form> 
<input type="hidden" name="form1" value="whatever"> 
<input name="form1_email" /> 
<input type="submit" value="Submit Form 1" /> 
</form> 

然後你可以使用任何的這些方法來檢查提交該表格(這個例子檢查「form1的」提交)將使用:

if (isset($form1_errors)) echo $form1_errors; // Print only form1's errors 

如果這不幫助讓我知道,並通過發佈您的代碼澄清您的問題。

+1

+1,很好的答案。簡單而優雅。 – ajacian81 2012-12-02 15:34:50

+0

謝謝我是codeigniter的新手,這幫了我的忙:) – Sam 2013-05-07 08:52:12

0

我所做的是劃分兩種形式。該視圖會像

<?php echo validation_errors(); ?> 
    <?php echo form_open('form1'); ?> 
    <form id="form1" action="some_action"> 
    //Inputs 
    </form> 
    <?php echo form_open('form2'); ?> 
    <form id="form2" action="other_action"> 
    //Inputs 
    </form> 

現在,在控制器,你可以有兩種不同的功能,用於每個驗證:現在

//Controller 
    function some_action(){ 
    //validate form and code 
    } 

    function other_action(){ 
    //validate form2 and code 
    } 

,所有驗證信息將出現在同一個地方,但將只顯示每個表單的消息。希望有幫助