1

我正在使用 apigility 1.0.4 和 zend 框架 2.3.3 编写一个 PHP 5.6 应用程序

有了apigility,我创建了一个名为drink 的新重置服务,并创建了一个名为“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”。

有什么想法缺少什么吗?

4

1 回答 1

2

您必须从您那里提取数据InputFilter才能获取过滤后的数据。

所以在你的听众里面:

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

并继续使用该$data数组。

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

我认为这在 Apigility 文档中并没有这么清楚地解释,而且我认为很多用户都会犯这个错误。我在 GitHub 上的一个问题中写过这个。

于 2014-11-17T10:28:41.210 回答