FOSRestBundle:ParamFetcher错误

时间:2018-02-10 16:43:58

标签: php symfony fosrestbundle

我正在为我的项目使用FOSRestBundle 我已将此路由配置为可以访问不同的数据:

```

   /**
     * @Rest\Get("")
     *
     * @Rest\QueryParam(
     *     name="categoriesId",
     *     requirements="[0-9a-zA-Z\- \/_:.,\s]",
     *     default="",
     *     description="The categories ids."
     * )
     * @Rest\QueryParam(
     *     name="orderBy",
     *     requirements="[a-zA-Z0-9]",
     *     default="score",
     *     description="The keyword to search for."
     * )
     * @Rest\QueryParam(
     *     name="order",
     *     requirements="asc|desc",
     *     default="desc",
     *     description="Sort order (asc or desc)"
     * )
     * @Rest\QueryParam(
     *     name="limit",
     *     requirements="\d+",
     *     default="-1",
     *     description="Max number of celebrities returned."
     * )
     * @Rest\QueryParam(
     *     name="offset",
     *     requirements="\d+",
     *     default="0",
     *     description="The offset"
     * )
     *
     * @Rest\View(serializerEnableMaxDepthChecks=true)
     * @param ParamFetcherInterface $fetcher
     * @param EntityManagerInterface $em
     * @return array
     */
    public function getAction(ParamFetcherInterface $fetcher, EntityManagerInterface $em) {
        // Get categories
        $categories_id = explode(',', $fetcher->get('categoriesId'));

        $options = [
            'addProfilePicture' => true,
            'addCategories' => true,
        ];

        // Configure limit and order
        if($fetcher->get('limit') !== -1)
            $options['limit'] = $fetcher->get('limit');

        $options['offset'] = $fetcher->get('offset');

        // Configure order
        switch ($fetcher->get('orderBy')) {
            case 'score':
                $options['orderBy'] = 'score';
        }

        $rows = $em->getRepository(Celebrity::class)->findByCategories($categories_id, $options);

        return $rows;
    }

```

但是当我用Postman调用我的节点时,我发现了这个错误:

  

需要通过setController

设置控制器和方法

错误来自ParamFetcher和行

$categories_id = explode(',', $fetcher->get('categoriesId'));

您对此问题的根源有任何了解:/?

1 个答案:

答案 0 :(得分:1)

只需在Symfony的config.yml中启用param fetcher listener:

fos_rest:
    param_fetcher_listener: true