Проверка обратного вызова - PullRequest
1 голос
/ 25 июля 2011

У меня возникла проблема при попытке отобразить ошибку проверки формы в представлении с использованием функции проверки обратного вызова.Если пользователь выбирает «Да» для опции транспортного средства, форма должна проверить другие обязательные поля, связанные с этим полем опции транспортного средства.

В моем контроллере у меня есть простая функция, которая выводит форму и возвращает данные из формы:

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
    }
}

В папке config у меня есть файл 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>

Но я не получаю никаких сообщений об ошибках, проверки также не работают.

1 Ответ

0 голосов
/ 25 июля 2011

Сразу после функции new_customer_record () вы должны добавить функцию обратного вызова (не в конфигурации, но добавить функцию checkVehicleInfo в свой контроллер).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...