2011-12-08 8 views
5

Tiene una matriz de clientes, cada uno con detalles individuales. Aquí hay un ejemplo muy SIMPLE.Codeigniter: muestra un mensaje de error individual para los campos de la matriz

<input type="text" name="customer_names[]" />

en CodeIgniter, se requiere que cada CUSTOMER_NAME
$this->form_validation->set_rules('customer_names[]','Customer Names','required');

Si alguno de los nombres de los clientes están en blanco, validation_errors(); muestra un mensaje para toda la matriz.

¿Cómo puedo obtener mensajes de error individuales para ese cliente?

NOTA: echo form_error('customer_names[0]'); es lo que trato de lograr donde customer_name 0 se ha dejado en blanco.

+0

De acuerdo con los documentos, que shoul trabajo: http://codeigniter.com/user_guide/libraries/form_validation.html#arraysasfields ¿Qué estás viendo? – swatkins

Respuesta

1

En cuanto a la documentación Form Validation, específicamente la sección Using Arrays as Field Names, creo que va a necesitar para nombrar explícitamente sus entradas mediante la inclusión del índice en el nombre para obtener el método form_error() trabajar como usted desea.

Para que form_error('customer_names[0]') funcione, en realidad tendrá que haber una entrada con el nombre customer_names[0].

+0

Esto funcionó bien para mí, aunque debo nombrar explícitamente mis campos con sus respectivas claves para ser útil. Esta [respuesta aquí] (http://stackoverflow.com/a/32304264/4065407) dice que CodeIgniter 3 tiene una función para esto. –

+0

La respuesta de @machineaddict es la misma para esto, pero no es necesario que especifique el índice en el nombre de la regla. –

0

Estaba teniendo el mismo problema con CodeIgniter 2.1.3. He resuelto de esta manera:

La entrada es:

<input type="text" name="customer_names[0]" />
<input type="text" name="customer_names[1]" />
...

La validación de formularios es:

$this->form_validation->set_rules('customer_names[0]','Customer Names','required');
$this->form_validation->set_rules('customer_names[1]','Customer Names','required');
...

Los errores aparecen de este modo:

echo form_error('customer_names[0]');
echo form_error('customer_names[1]');
...

Cuestiones relacionadas