Я пишу приложение PHP 5.6, используя apigility 1.0.4 и Zend Framework 2.3.3
с помощью apigility я создал новый сервис сброса под названием drink
и создал поле под названием «drink_flavor».
Я использовал следующие фильтры:
Zend\Filter\StringToLower
Zend\Filter\StringTrim
теперь я использую почтальон, чтобы проверить это.
поэтому я настроил URL для http://url/drink
Я отправляю данные поста с помощью raw json со следующим текстом:
{"drink_flavor" : " AAA"}
как видите, в начале у меня есть пробел, а буквы заглавные.
Теперь, если мой код контроллера у меня есть следующее:
public function create($data)
{
die(var_export($data,1));
}
так что я просто печатаю данные.
если бы я все правильно понял вместо того, чтобы получить «ААА», я должен был получить «ААА»
из-за моих фильтров, но я все еще получил неизмененные данные, которые являются «AAA».
Есть идеи, чего не хватает?
Вы должны получить данные от вас InputFilter
чтобы получить отфильтрованные данные.
Итак, внутри вашего слушателя:
// Get filtered data
$inputFilter = $this->getInputFilter();
$data = $inputFilter->getValues();
И продолжать использовать это $data
массив вместо.
$data
параметр в вашем методе создания является необработанным / нефильтрованным POST
данные.
Вы должны быть осторожны, используя это $data
в качестве источника для ваших методов, так как все, что отправлено клиентом, будет там.
Я думаю, что это не так ясно объяснено в документации Apigility, и я думаю, что многие пользователи делают эту ошибку. Я писал об этом в проблема на GitHub.
Других решений пока нет …