Php 未执行筛选器

Php 未执行筛选器,php,laminas-api-tools,Php,Laminas Api Tools,我正在使用apigility 1.0.4和zend framework 2.3.3编写一个PHP5.6应用程序 借助apigility,我创建了一个名为“饮料”的新重置服务 并创建了一个名为“饮料风味”的文件 我使用了以下过滤器: Zend\Filter\StringToLower Zend\Filter\StringTrim 现在我用邮递员来测试它 因此,我将url配置为http://url/drink 我正在发送带有原始json的post数据,其中包含以下文本: {"drink_flavo

我正在使用apigility 1.0.4和zend framework 2.3.3编写一个PHP5.6应用程序

借助apigility,我创建了一个名为“饮料”的新重置服务 并创建了一个名为“饮料风味”的文件

我使用了以下过滤器:

Zend\Filter\StringToLower
Zend\Filter\StringTrim
现在我用邮递员来测试它

因此,我将url配置为
http://url/drink
我正在发送带有原始json的post数据,其中包含以下文本:

{"drink_flavor" : " AAA"}
正如你所看到的,我在开头有一个空格,字母是大写的

现在,如果我的控制器代码为:

public function create($data)
{
    die(var_export($data,1));
}
所以我只是在打印数据

如果我对每件事都理解正确,而不是得到“AAA”,我应该得到“AAA” 由于我的过滤器,但我仍然得到未修改的数据,这是“AAA”


你知道缺少什么吗?

你必须从你的
InputFilter
中提取数据才能得到过滤后的数据

所以在你的听众里面:

// Get filtered data
$inputFilter = $this->getInputFilter();
$data = $inputFilter->getValues(); 
并继续使用该
$data
数组

create方法中的
$data
参数是原始/未过滤的
POST
数据。 使用
$data
作为方法的源代码时应该小心,因为客户端发送的任何内容都将在其中

我认为这在Apigility文档中没有解释清楚,我认为很多用户都犯了这个错误。我在一本书中写过这件事