2014-11-16 104 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中寫過這個。