paramconverter 不转换参数

paramconverter not converting parameters

我在使用 symfony 4 时遇到问题。我正在将一个现有的应用程序从 symfony 3.3 迁移到 symfony 4,但出现了一个我无法更正的错误。

这是我的控制器: BaseController是响应sm_admin路由的控制器

class HomeController extends BaseController
{
    public function __construct(ParamBagService $parambag, CacheService $cache) {
        parent::__construct($parambag, $cache);
        $this->routePrefix = 'sm_adminarea_';
    }


    /**
     * @Route("/", name="adminarea_index")
     * @Template("@SMAdmin/Home/index.html.twig")
     */
    public function indexAction(Area $area = null)
    {
        $this->area = $area;
        return parent::indexAction();
    }
}

这是我的 routes.yaml

sm_admin:
    resource: "@SMAdminBundle/Controller/"
    type:     annotation
    prefix:   /

sm_admin_area:
    resource: "@SMAdminAreaBundle/Controller/"
    type:     annotation
    prefix:   /Area/{area}

当我去sm_admin路线时,一切都很好。当我转到 /area/the_id_of_area 时,出现以下错误:argument 1 passed to indexAction must be of type Area or null, string provided 这让我认为区域参数未转换,文档未从数据库中检索。

我尝试添加此 paramConverter 注释:@ParamConverter("area", options={"mapping"={"area"="id"}}) 但我得到了同样的错误...

我做错了什么?

尝试使用

@ParamConverter("area", class="YourBundle:Area")

如所见http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/converters.html#usage

好的,我在这里找到了解决方案https://matthiasnoback.nl/2012/10/symfony2-mongodb-odm-adding-the-missing-paramconverter/

默认参数转换器使用 doctrine ORM 而我使用 doctrine ODM 所以我只需要在 servide.yaml 中添加它:

param_converter:
    class: 'Sensio\Bundle\FrameworkExtraBundle\Request\ParamConverter\DoctrineParamConverter'
    arguments: ['@doctrine_mongodb']
    tags:
        - { name: 'request.param_converter', converter: 'doctrine.odm' }