ZF2 apigility - Как мы можем проверить коллекции в данных JSON
Как я могу получить проверенное значение JSON с помощью Apigility. Например, мне нужно пройти валидацию user_id
под users
Сбор в следующих данных JSON.
{
"log_type": "split food",
"meal_type": "Break Fast",
"meal_date": "12-2-2015",
"users": [
{
"user_id": 1,
"food_details": [
{
"food_id":101
}
]
}
]
}
Я знаю, что поля могут быть проверены с помощью apigility, но здесь от json.
Спасибо
1 ответ
Вы должны заглянуть в документацию проверки ZF2 для проверки коллекций (форм). Некоторая документация по этому вопросу может быть найдена здесь. Вы должны установить type
поле как это:
'type' => 'Zend\InputFilter\CollectionInputFilter',
для проверки вложенных объектов (или наборов полей формы) необходимо установить type
поле следующим образом:
'type' => 'Zend\InputFilter\InputFilter'
Вы используете это так:
'input_filter' => array(
'log_type' => array(
'validators' => array(
// ... validators ...
),
'filters' => array(
// ... filters ...
),
),
'meal_type' => array(
'validators' => array(
// ... validators ...
),
'filters' => array(
// ... filters ...
),
),
'meal_date' => array(
'validators' => array(
// ... validators ...
),
'filters' => array(
// ... filters ...
),
),
'users' => array(
'required' => true,
'count' => ... optional count ...
'input_filter' => ... input filter or input filter config to use for each element ...
'type' => 'Zend\InputFilter\CollectionInputFilter',
),
'some_complex_element' => array(
'property_of_complex_element' => array(
'name' => 'property_of_complex_element',
'required' => false,
'validators' => array(
// ... validators ...
),
'filters' => array(
// ... filters ...
),
),
'type' => 'Zend\InputFilter\InputFilter',
)
),
Пример того, как это использовать, можно найти здесь припереполнении стека.
Чтобы достичь того, чего вы хотите, вам, скорее всего, придется объединить эти два решения. Не уверен, что это самый простой способ сделать это, но это определенно возможно!
РЕДАКТИРОВАТЬ
Для людей, которые еще не установили валидацию:
Для проверки контента в Apigility
Вы должны использовать zfcampus/zf-content-validation
модуль и следуйте документации для конфигурации. Этот модуль позволяет вам настроить ваши входные фильтры и валидаторы в input_filter_spec
как вы обычно делаете для проверки формы в ZF2. Здесь внутри этих input-filter
В конфигурационных массивах вы можете использовать конфиги, на которые я ссылался выше.
Поэтому сначала правильно установите этот модуль и после настройки вы сможете использовать эти типы проверки в Apigility
,