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' }
我在使用 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' }