Как получить обоснованное значение 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.
спасибо
Вы должны изучить документацию проверки 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
.