2016-10-09 65 views
0

我正在使用一種窗體,其中包含一個動態添加一對輸入字段的div。Codeigniter陣列後端驗證

VIEW:

<?php echo form_open_multipart('location/add'); ?> 
<div> 
<input type="text" name="title[]"/> 
<div id="infoMessage"><?php echo form_error('title[]'); ?></div> 
</div> 
<div> 
<input type="text" name="desc[]"/> 
<div id="infoMessage"><?php echo form_error('desc[]'); ?></div> 
</div> 
<div> 
<input type="text" name="link[]"/> 
<div id="infoMessage"><?php echo form_error('link[]'); ?></div> 
</div> 

<input type="submit" name="" value="enter"> 
<?php echo form_close(); ?> 

enter image description here

現在,起初我不希望這3個輸入字段驗證,但我想後端驗證爲所有要添加輸入字段動態(通過點擊+)按下提交按鈕。

控制器:

public function add() 
    { 

     $this->form_validation->set_rules('title[]','Title','required'); 
     $this->form_validation->set_rules('desc[]','Description','required'); 
     $this->form_validation->set_rules('link[]','Link','required'); 

      if ($this->form_validation->run() == FALSE) 
      { 
       $this->load->view('test'); 
      } 
      else 
      { 
       .... 
      } 

    } 

回答

0

可以使用自定義的回調驗證函數 EX:

public function add() 
{ 
    $this->form_validation->set_rules('title', 'Title', 'callback_title_validate'); 
    if ($this->form_validation->run() == FALSE) 
    { 
     $this->load->view('test'); 
    } 
    else 
    { 
     //.... 
    } 
} 

function title_validate($title){ 
    foreach($title as $key=>$value){ 
     if($title[$key]==null || $title[$key]==false){ 
     $this->form_validation->set_message('title_validate', 'The Title field is Required.'); 
      return FALSE; 
     } 
     } 
    return TRUE; 
} 
+0

見猶提交的初始投入也將驗證吧? – Shihas

+0

不,你將不得不爲你想要驗證的所有字段自定義驗證函數。 –

+0

我想你沒有得到我的問題:( – Shihas