Как да валидирам многоизмерен масив в fuelphp?

въвеждането на формата е както по-долу:

<input type="input" name="order_item[quantity][]" value="1">
<input type="hidden" value="22" name="order_item[item_sku_id][]">

<input type="input" name="order_item[quantity][]" value="1">
<input type="hidden" value="25" name="order_item[item_sku_id][]">

<input type="input" name="order_item[quantity][]" value="1">
<input type="hidden" value="23" name="order_item[item_sku_id][]">

<input type="input" name="order_item[quantity][]" value="1">
<input type="hidden" value="65" name="order_item[item_sku_id][]">

и правилото за валидиране е следното:

$valid->add('order_item[quantity]', __('model.order_item.quantity'))   
->add_rule('required');

изглежда правилото за валидиране по-горе не работи! Как да валидирам такъв многоизмерен масив? Благодаря много!

Редактиране1:

разбира се, има друга променлива item_sku_id, за да направи всеки order_item уникален.


person makenai    schedule 26.10.2014    source източник
comment
Как да разберете спрямо кой артикул от поръчката да валидирате? Записът във вашия формуляр 'order_item[quantity]' няма никаква представа от кой запис идва. Какво ще кажете за: name=order_item[quantity][$orderId][]? Или нещо такова?   -  person Ryan Vincent    schedule 26.10.2014
comment
има ! Добавих го, можете ли да дадете съвет?   -  person makenai    schedule 27.10.2014


Отговори (1)


    if (isset($data['order_item'])) {
        foreach ($data['order_item']['quantity'] as $index => $order_item) {
            $valid->add('order_item[quantity][' . $index . ']', __('model.order_item.quantity'))
                ->add_rule('valid_string', array('numeric'))
                ->add_rule('required');
            $valid->add('order_item[item_sku_id][' . $index . ']', __('model.order_item.item_sku_id'))
                ->add_rule('valid_string', array('numeric'))
                ->add_rule('required');
        }
    }

Решено, По този начин многоизмерният масив може да бъде валидиран.

person makenai    schedule 28.10.2014