2015-01-27 2 views
0

CodeIgniter v2.1.2форма проверки на CodeIgniter Корзина страницы

У меня есть очень простой CodeIgniter покупок установки телега страницы как на the CodeIgniter documentation.

Эта страница Корзины показывает, однако многие продукты в корзине и input элементов для редактирования количества каждого есть name атрибутов распределен следующим образом: 1[qty], 2[qty], 3[qty], 4[qty], 5[qty] и т.д.

<input name="1[qty]" type="text" ... 
<input name="2[qty]" type="text" ... 
<input name="3[qty]" type="text" ... 
<input name="4[qty]" type="text" ... 
<input name="5[qty]" type="text" ... 
.... 

Это схема в соответствии с документацией CodeIgniter, и, похоже, она работает хорошо, потому что массив POST автоматически находится в правильном формате, чтобы легко обновлять корзину.

$this->cart->update($this->input->post()); 

кажется, что cart->update() будет игнорировать любые недопустимый ввод. Другими словами, тележка обновляется только тогда, когда количество представляет собой числовые значения. Однако, я думаю, мне нужно применить проверку формы CodeIgniter на странице корзины. Может быть, мне это не нужно, и я тоже заинтересован в ваших мыслях.

В моем контроллере, где я обычно набор правил по имени поля с помощью set_rules, я понятия не имею, что происходит в параметре поля name, когда у меня есть неизвестное число полей.

documentation says I can declare validation on arrays, но я не могу получить следующий код для работы для меня. Я пробовал [qty], [][qty] и некоторые другие. Не работая, я имею в виду, что в полях количества на странице Cart нет ошибок проверки, когда они содержат недопустимые данные, и они всегда проходят проверку и попадают в функцию update().

$this->load->library('form_validation'); 
$this->form_validation->set_rules('[][qty]', 'Quantity', 'numeric|strip_tags|xss_clean'); 

if ($this->form_validation->run() === TRUE) // passed validation -> submission 
{ 
    // update the cart 
    $this->cart->update($this->input->post()); 
    .... 
} 
else 
{ 
    // display validation errors 
    .... 
} 
  • Как я могу применить проверку на странице корзины, когда количество полей является динамическим и именование, как описано выше?

  • Нужна ли мне проверка количества полей? Данные корзины временно сохраняются в сеансе, а когда они передаются в функцию cart->update(), недопустимые данные, как представляется, удаляются автоматически.

ответ

0

Поскольку я не мог понять, как объявить проверку на массив, я использовал for цикл, чтобы объявить правило на каждом поле «КОЛ» на основе количества уникальных позиций в корзине в соответствии с значение count($this->cart->contents()). (В отличие от $this->cart->total_items() который подсчитывает все в том числе кратные одной строки.)

В контроллер ...

$this->load->library('form_validation'); 

for ($i = 1; $i <= count($this->cart->contents()); $i++) 
{ 
    $this->form_validation->set_rules($i . '[qty]', 'Item #' . $i . ' quantity', 'numeric|strip_tags|xss_clean'); 
} 

Я до сих пор не может подтвердить, если форма проверки требуется в этом случае. Как правило, проверка на стороне сервера необходима для защиты базы данных от плохих данных или для обеспечения безопасности. В этом случае функция cart->update(), как представляется, автоматически отклоняет недействительные записи.

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