过滤器未被执行

时间:2014-11-16 20:54:13

标签: php apigility

我正在使用apigility 1.0.4和zend framework 2.3.3编写PHP 5.6应用程序

apigility我创建了一个名为drink的新重置服务 并创建了一个名为" drink_flavor"。

的文件

我使用了以下过滤器:

Zend\Filter\StringToLower
Zend\Filter\StringTrim

现在我用邮递员来测试它。

所以我将网址配置为http://url/drink 我用原始json发送帖子数据时带有以下文字:

{"drink_flavor" : " AAA"}

你可以看到我在开头有一个空格,而且这些字母都是大写。

现在如果我的控制器代码我有以下内容:

public function create($data)
{
    die(var_export($data,1));
}

所以我只是打印数据。

如果我正确地理解了所有内容而不是获得' AAA'我应该得到' aaa' 因为我的过滤器,但我仍然得到未经修改的数据,这是" AAA&#34 ;.

任何想法缺少什么?

1 个答案:

答案 0 :(得分:2)

您必须从InputFilter提取数据以获取过滤后的数据。

所以在你的听众中:

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

继续使用$data数组。

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

我认为在Apigility文档中没有这么清楚地解释,我认为很多用户犯了这个错误。我在an issue on GitHub写了这篇文章。