2012-02-08 48 views
0

我使用笨的表單驗證,它工作正常,但是當,表單驗證失敗,它不顯示驗證錯誤,通過使用 <?php echo validation_errors();?> 我使用表單驗證在CodIgniter

function insertProduct(){ 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('pname','ProductName','trimirequired'); 
     if($this->form_validation->run()){ 
      $this->addProduct(); 
     } 
     else{ 
      $this->load->model('inventory/stock'); 
     } 

請幫助我是新來的codeIgniter

+1

我不明白'...?你確實有一個錯字:'trimirequired'應該是'trim | required'。 – 2012-02-08 04:33:12

+0

我在我的視圖中使用'validation_errors()',長代碼,不能在這裏給出,當我使用'trim | required'時,它不起作用 – 2012-02-08 04:45:17

+1

您應該在else {}中加載視圖,爲什麼你在那裏加載模型嗎? – stef 2012-02-08 13:02:37

回答

0

在你的看法你應該有這樣的事情(這個例子單獨顯示錯誤);

<?php echo form_error('p_name'); ?> 
<label for="p_name">Product Name</label> 
<input type="text" id="p_name" name="p_name" value="<?php echo set_value('p_name'); ?>" /> 
0

您需要告訴控制器中的方法呈現窗體驗證成功/失敗的視圖。

如果您將insertProduct方法更改爲以下方法,它'應該'解決您的問題。

function insertProduct(){ 
    $this->load->library('form_validation'); 
    $this->form_validation->set_rules('pname','ProductName','trimirequired'); 
    if($this->form_validation->run()){ 
     $this->addProduct(); 
     $this->load->view('{name_of_your_view}'); 
    } else{ 
     $this->load->model('inventory/stock'); 
     $this->load->view('{name_of_your_view}'); 
    } 
} 

其中「name_of_your_view」是你放置了VALIDATION_ERRORS視圖()中代碼。

0

從笨教程頁面這個例子說明如何確認提交的數據在顯示驗證錯誤像你這樣的形式的標題可能期望:

http://codeigniter.com/user_guide/tutorial/create_news_items.html

爲創建功能的示例代碼如下所示:

public function create() 
{ 
    $this->load->helper('form'); 
    $this->load->library('form_validation'); 

    $data['title'] = 'Create a news item'; 

    $this->form_validation->set_rules('title', 'Title', 'required'); 
    $this->form_validation->set_rules('text', 'text', 'required'); 

    if ($this->form_validation->run() === FALSE) 
    { 
     $this->load->view('templates/header', $data); 
     $this->load->view('news/create'); 
     $this->load->view('templates/footer'); 

    } 
    else 
    { 
     $this->news_model->set_news(); 
     $this->load->view('news/success'); 
    } 
} 

正如其他人所說,雖然您需要添加一個視圖來處理成功,並將它們返回到窗體以顯示失敗時的錯誤。

0

我們可以更改包含下面的代碼行:

$this->form_validation->set_rules('pname','ProductName','trimirequired'); 

如下:這裏使用了`VALIDATION_ERRORS()

​​