我正在使用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 ;.
任何想法缺少什么?
答案 0 :(得分:2)
您必须从InputFilter
提取数据以获取过滤后的数据。
所以在你的听众中:
// Get filtered data
$inputFilter = $this->getInputFilter();
$data = $inputFilter->getValues();
继续使用$data
数组。
您的create方法中的$data
参数是原始/未过滤的POST
数据。
您应该小心使用$data
作为方法的来源,因为客户端发送的任何内容都将在那里。
我认为在Apigility文档中没有这么清楚地解释,我认为很多用户犯了这个错误。我在an issue on GitHub写了这篇文章。