2012-09-29 12 views
2

我試圖讓我的PARAM提取器控制器的工作。我做了文檔中指定的所有說明。所以,我有什麼: 配置 fos_rest.yml: FOSRestBundle不能得到PARAM提取器

fos_rest: 
    param_fetcher_listener: 'force' 
    view: 
     formats: 
      json: true 
      xml: false 
      rss: false 
     mime_types: 
      json: ['application/json', 'application/x-json', 'application/vnd.example-com.foo+json'] 
      png: 'image/png' 
     failed_validation: HTTP_BAD_REQUEST 
     default_engine: twig 
     view_response_listener: 'force' 
    format_listener: 
     default_priorities: 
      - json 
    routing_loader: 
     default_format: json 

sensio_framework_extra: 觀點:{註釋:假} 路由器:{註釋:真正}

我的控制器

<?php 

namespace Push\PointsBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Nelmio\ApiDocBundle\Annotation\ApiDoc; 
use FOS\RestBundle\View\View; 
use FOS\RestBundle\Controller\Annotations\QueryParam; 
use FOS\RestBundle\Request\ParamFetcherInterface; 
use FOS\RestBundle\Controller\Annotations\RequestParam; 
use FOS\RestBundle\Request\ParamFetcher; 

class RestController extends Controller 
{ 
    /** 
    * @QueryParam(name="latitude", requirements="[0-9.]+", default="0", description="") 
    * @ApiDoc() 
    */ 
    public function checkPointsAction(ParamFetcher $params) 
    { 
     $view = new View(); 
     return $this->get('fos_rest.view_handler')->handle($view); 
    } 
} 

當我打電話給我的方法時:

控制器 「推\ PointsBundle \控制器\ RestController :: checkPointsAction()」 要求您爲提供一個值「$ PARAMS」的說法(因爲 沒有默認值,或因爲存在非可選參數 後這個)。

我做錯了什麼或錯過了什麼?謝謝。

+0

你解決了這個問題嗎?我有完全相同的問題。 – MartinElvar

回答

8

我經常遇到FOSRestBundle和過期的緩存問題。如果我在註釋中進行更改,它有時不會刷新。首先,嘗試刪除app/cache目錄的內容(rm -rf app/cache/*)。

我沒有檢查參數是否通過類型或名稱映射到方法參數。如果它是晚於你的參數應該叫$paramFetcher(不$params):

public function checkPointsAction(ParamFetcher $paramFetcher) { } 

編輯:是否啓用PARAM提取器監聽?

fos_rest: 
    param_fetcher_listener: true 
+0

謝謝你的回覆。我嘗試清除緩存並嘗試重命名參數,但它根本沒有幫助:( –

+0

我查看了日誌並注意到symfony僅通知了BodyListener。沒有關於PararmFetcherListener的條目 –

+0

您是否啓用了param fetcher偵聽器?更新我的答案與正確的配置。 –

1

我有同樣的問題,正如評論中指出的那樣。我解決了這個改變的變量名從

public function addMapAction(ParamFetcher $pf) { 

public function addMapAction(ParamFetcher $paramFetcher) { 

而且所有的突然我的工作就像一個魅力,顯然$ paramFetcher是必需的。

+0

我拉我的頭髮試圖讓QueryParam工作......這確實對我來說。 – cmenning