фильтры не выполняются

Я пишу приложение 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».

Есть идеи, чего не хватает?

1

Решение

Вы должны получить данные от вас InputFilter чтобы получить отфильтрованные данные.

Итак, внутри вашего слушателя:

// Get filtered data
$inputFilter = $this->getInputFilter();
$data = $inputFilter->getValues();

И продолжать использовать это $data массив вместо.

$data параметр в вашем методе создания является необработанным / нефильтрованным POST данные.
Вы должны быть осторожны, используя это $data в качестве источника для ваших методов, так как все, что отправлено клиентом, будет там.

Я думаю, что это не так ясно объяснено в документации Apigility, и я думаю, что многие пользователи делают эту ошибку. Я писал об этом в проблема на GitHub.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]