2011-07-25 13 views
1

コールバック検証機能を使用してビューでフォーム検証エラーを表示しようとすると、問題が発生します。ユーザーが車両オプションで「はい」を選択した場合、フォームはその車両オプションフィールドに関連する他の必須フィールドをチェックする必要があります。私は、フォームを出力し、バックフォームからデータを取得する単純な関数持って私のコントローラでコールバック検証

:configフォルダに

function new_customer_record() 
{ 
    if ($this->form_validation->run() == FALSE) 
    { 
     // data array has values to be passed to the customer_form_view 
     $this->load->view('customer_form_view',$data); 
    }else{ 
     //get data from the post method and save it to the database 
    } 
} 

を、私は満たされたアレイを有するfrom_validation.phpと呼ばれるファイルを持っています検証ルールやコールバック関数下図のように:ビューで

$config = array (
    'employee/new_record' => array(
     array (
      'field' => 'first_name', 
      'label' => 'First Name', 
      'rules' => 'required', 
     ), 
     array (
      'field' => 'vehicleOwn', 
      'label' => 'Own a vehicle', 
      'rules' => 'required|callback_checkVehicleInfo', 
     ), 
    ), 
); 


function checkVehicleInfo($str){ 
    if ($str == "Yes"){ 

     $config = array ('employee/new_record' => array(

      array (
       'field' => 'vehicle_model', 
       'label' => 'Vehicle Model', 
       'rules' => 'required' 
      ), 
      array (
       'field' => 'vehicle_rego', 
       'label' => 'Vehicle Rego', 
       'rules' => 'required' 
      ), 
      array (
       'field' => 'vehicle_type', 
       'label' => 'Vehicle Type', 
       'rules' => 'required' 
      ), 
     ), 
    ); 
    $this->form_validation->set_message('checkVehicleInfo','Please enter your vehicle information'); 
    return FALSE; 
}else{ 
    return TRUE; 
} 
} 

、私は検証ルールを「必要」しているフィールドごとに次のような何かを持っている - 他のフィールドは、中(車両の必須項目を除き、正常に動作コールバック関数):

<?php $vehicle_model = @field($this->validation->vehicle_model, $customer-      >vehicle_model); ?> 
<tr> 
<td><label>Vehicle Model</label></td> 
<td><input name="vehicle_model" type="text" value="<?php echo ($edit=== true)?  $vehicle_model :set_value('vehicle_model'); ?>" size="20" maxlength="20"> 
<?php echo form_error('vehicle_model'); ?></td> 
</tr> 

エラーメッセージは表示されませんが、検証は機能していません。

答えて

0

new_customer_record()関数の直後に、コールバック関数を追加する必要があります(設定ではなく、コントローラにcheckVehicleInfo関数を入れます)。

+0

new_customer_record()関数の直後にcheckVehicleInfo($ str)関数を追加しましたが、機能しませんでした。 set_value()も機能しません。 – Adam

+0

vehicleOwnルールから 'required'を削除します。 – toopay

関連する問題