2014-11-16 69 views
1

我使用apigility 1.0.4和Zend框架2.3.3过滤器不会被执行

与apigility写一个PHP 5.6应用程序,我创建了一个名为饮料 一个新的重置服务,并创建了一个名为提交“drink_flavor” 。

我用下面的过滤器:

Zend\Filter\StringToLower 
Zend\Filter\StringTrim 

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

,所以我配置的URL来http://url/drink 我与原始JSON发送后数据用以下文字:

{"drink_flavor" : " AAA"} 

,你可以看到我在开始时有一个空格和字母都大写。

现在,如果我的控制器代码,我有以下几点:

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

所以我只是打印数据。

如果我正确地理解所有事情而不是获得'AAA',我应该得到'aaa' ,因为我的过滤器,但我仍然有未修改的数据是“AAA”。

任何想法缺少什么?

回答

2

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

所以,你的监听器里:

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

,并继续使用该$data阵列代替。

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

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