2012-05-22 5 views
0

У меня есть следующий вид:Validating форма с использованием CodeIgniter

<label>One</label> 
Product ID:<input type="text" name="productid[]" value=""> 
Product Quantity: <input type="text" name="quantity[]" value=""> <br> 

<label>Two</label> 
Product ID:<input type="text" name="productid[]" value=""> 
Product Quantity: <input type="text" name="quantity[]" value=""> <br> 

<label>Three</label> 
Product ID:<input type="text" name="productid[]" value=""> 
Product Quantity: <input type="text" name="quantity[]" value=""> <br> 

<!-- there may be more inputs like above (users can create new inputs 
    as many as they want) // I have a jquery function to create new rows--> 


    <input type="submit" value="submit"> 

Теперь мой вопрос заключается в том, чтобы проверить форму с помощью CodeIgniter, когда у меня есть входные имена, как this- name="productid[]" вместо name="productid" в моей форме.

Обычно я использую для проверки своей формы следующим образом: way, но на этот раз она не будет работать для формы выше.

Как его проверить?

ответ

0

Вы бы использовать буквенные имена полей, с кронштейнами:

$this->form_validation->set_rules('product_id[]', 'Product', 'required'); 
$this->form_validation->set_rules('quantity[]', 'Quantity', 'required'); 

Это запустит проверку на каждый поле с этим именем. Если вы должны подтвердить только определенный индекс, еще раз - использовать имя буквального поля (и указать индекс в вашем HTML):

// <input name="product_id[3]"> 
$this->form_validation->set_rules('product_id[3]', 'Product', 'required'); 

Это все в documentation for Codeigniter's Form Validation class:

Использование массивов в качестве Имена полей

Класс проверки формы поддерживает использование массивов в качестве полей . Рассмотрим следующий пример:

<input type="text" name="options[]" value="" size="50" />

Если вы используете массив в качестве имени поля, вы должны использовать точное имя массива в функции Helper, что требуется имя поля, а также в качестве Validation имя поля Rule ,

Например, чтобы установить правило для вышеуказанной области вы будете использовать:

$this->form_validation->set_rules('options[]', 'Options', 'required');

Или, чтобы показать ошибку на поле выше вы будете использовать:

<?php echo form_error('options[]'); ?>

Или для повторного заполнения поля, которое вы использовали бы:

<input type="text" name="options[]" value="<?php echo set_value('options[]'); ?>" size="50" />

Вы также можете использовать многомерные массивы в качестве имен полей.Для Например:

<input type="text" name="options[size]" value="" size="50" />

Или даже:

<input type="text" name="sports[nba][basketball]" value="" size="50" />

Как наш первый пример, вы должны использовать точное имя массива в вспомогательные функции:

<?php echo form_error('sports[nba][basketball]'); ?>

Если вы используете usi нг флажков (или других полей), которые имеют несколько варианты, не забудьте оставить пустой скобку после каждого варианта, так , что все выборы будут добавлены в массив POST:

<input type="checkbox" name="options[]" value="red" />
<input type="checkbox" name="options[]" value="blue" />
<input type="checkbox" name="options[]" value="green" />

Или, если использовать многомерный массив:

<input type="checkbox" name="options[color][]" value="red" />
<input type="checkbox" name="options[color][]" value="blue" />
<input type="checkbox" name="options[color][]" value="green" />

При использовании вспомогательной функции вы будете включать в себя кронштейн, как также:

<?php echo form_error('options[color][]'); ?>

0

Вы попробовали this ...? Несколько строк ниже в руководстве ...

Смежные вопросы