2012-10-22 46 views
0

我得到了在我看來一些文本輸入:如何訪問驗證回調函數中的數組字段名稱值?

<label for="car-n">Car Name:</label><input type="text" name="cars[]" id="car-n"/> 
<label for="car-t">Car Type:</label><input type="text" name="cars[]" id="car-t"/> 

而現在,我想用CodeIgniter的驗證回調函數來驗證他們,但似乎我不能讓他們的價值觀:

$this->form_validation->set_rules('cars[]', 'Cars', 'required|xss_clean|callback__validate_cars');

...和功能:

function _validate_cars($input) 
{ 
    echo $input; //returns no field value; 
    echo $this->form_validation->set_value('cars[]'); //not works 
} 

所以,我應該如何訪問我的C這兩個字段值allback功能呢?我沒有在CodeIgniters用戶指南中看到關於這種情況的任何信息。

+0

我沒用過笨但是你試過'$這個 - > form_validation-> set_rules(」汽車','汽車','必需| xss_clean | callback__validate_cars');'?注意''''''' –

+0

的缺失,你可以通過'$ this-> input-> post('cars')'訪問發佈數據到你的函數 – manix

+0

我知道這可能是愚蠢的,但你有一個雙' '在函數名中,應該是'callback_validate_cars'而不是'callback__validate_cars'。忽略我,如果你的情況:) – manix

回答

1

好吧,看看下面的控制器:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Temp extends CI_Controller { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->library(array('form_validation')); 
    } 

    public function index() 
    { 
     $this->show_form(); 
    } 



    public function validate(){ 
     $this->form_validation->set_rules('cars[]', 'Cars', 'required|callback_validate_cars'); 
     if ($this->form_validation->run() == FALSE) 
     { 
      $this->show_form(); 

     } 
     else "All is ok"; 
    } 

    public function validate_cars($string) 
    { 
     print_r($this->input->post('cars')); 
     return false; 
    } 

    public function show_form() 
    { 
     echo '<form action="'. base_url('temp/validate').'" method="post">'; 
     echo 'Car 1: <input name="cars[]" type="text">'; 
     echo ' Car 2: <input name="cars[]" type="text">'; 
     echo '<input type="submit" value="Go!">'; 
     echo '</form'; 
    } 
} 

可以使用崗位價值爲$this->input->post('cars');

相關問題