2

コントローラーをパラメーターフェッチャーで動作させようとしています。ドキュメントに指定されているすべての指示を実行しました。だから私が持っているもの: config fos_rest.yml:

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: ビュー: { 注釈: false } ルーター: { 注釈: true }

そして私のコントローラー

<?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);
    }
}

メソッドを呼び出すと、次のようになります。

コントローラ "Push\PointsBundle\Controller\RestController::checkPointsAction()" では、"$params" 引数に値を指定する必要があります (デフォルト値がないか、この引数の後にオプションではない引数があるため)。

私は何を間違えましたか、何かを逃しましたか?ありがとうございました。

4

2 に答える 2

11

FOSRestBundle と古いキャッシュでよく問題が発生します。注釈を変更すると、時々更新されないことがあります。まず、app/cache ディレクトリの内容を削除してみてください (rm -rf app/cache/*)。

パラメーターが型または名前によってメソッド引数にマップされているかどうかは確認しませんでした。パラメータが呼び出されるよりも遅い場合$paramFetcher(ではない$params):

public function checkPointsAction(ParamFetcher $paramFetcher) { }

編集: param fetcher リスナーを有効にしましたか?

fos_rest:
    param_fetcher_listener: true
于 2012-09-29T17:48:38.553 に答える
1

コメントで指摘されているように、私は同じ問題を抱えていました。変数名をから変更することでこれを解決しました

  public function addMapAction(ParamFetcher $pf) {

  public function addMapAction(ParamFetcher $paramFetcher) {

そして突然、私は魔法のように働きました.どうやら $paramFetcher が必要です。

于 2013-01-26T10:45:50.940 に答える