Cómo validar matrices multidimensionales con Codeigniter y Jquery



Answers

Codeigniter tiene una forma muy cuidadosa de manejar las reglas de validación para las entradas que se nombran como matrices, solo validará si el nombre del campo es exactamente el mismo, por lo que la regla

array(
    'field' => 'hotel[][hotel_name]', 
    'label' => 'Hotel Name', 
    'rules' => 'required'
    ),    

solo funcionaría si el campo se llamara hotel [] [hotel_name].
Dado que ese no es el nombre del campo (el nombre real es algo así como hotel [1] [hotel_name]), Codeigniter no lo validará.

Puede generar la matriz de configuración dinámicamente, pero creo que es mejor que escriba sus propias reglas de validación para esos campos por separado.

Question

Hola, necesito validar una forma multidimensional como esta

<input type="text" class="input-xlarge span5 req" id="contact_first_name" name="hotel[<?=$id?>][contact_first_name]" value="<?= set_value('hotel[contact_first_name]') ?>">
<input type="text" class="input-xlarge span5 req" id="contact_last_name" name="hotel[<?=$id?>][contact_last_name]" value="<?= set_value('hotel[contact_last_name]') ?>">

No conozco las dimensiones de la matriz final porque las entradas se agregan dinámicamente a través de jquery.

Estoy usando Codeigniter Form_Validation para el lado del servidor y a través de JQuery con JQuery Validator para el lado del cliente.

Estas son mis reglas de form_validation

$config['add_hotel'] = array(
array(
    'field' => 'hotel[][hotel_name]', 
    'label' => 'Hotel Name', 
    'rules' => 'required'
    ),    
array(
    'field' => 'hotel[][contact_first_name]', 
    'label' => 'First Name', 
    'rules' => 'trim|required'
    ),
array(
    'field' => 'hotel[][contact_last_name]', 
    'label' => 'Last Name', 
    'rules' => 'trim|required'
    ),

y así es como lo hago a través del validador jquery

$("#add_hotel").validate({
rules: {
    "hotel[][hotel_name]": "required"

  /*  errorElement: "div",
    wrapper: "div"*/
},
messages: {
   "hotel[][hotel_name]": "Please enter the Association Name"
},
submitHandler: function(form) {
    form.submit();
}

No sé cómo validar cada entrada del Hotel[] con su propia identificación, o tal vez haya otra forma de definir las entradas que pueden ser más simples.






Links