@ParamConverter 注解找不到实体对象
Posted
技术标签:
【中文标题】@ParamConverter 注解找不到实体对象【英文标题】:Entity object not found by the @ParamConverter annotation 【发布时间】:2022-01-09 01:42:17 【问题描述】:我在以前工作的控制器中遇到此错误。
我添加了一些新的控制器(具有不同的路由前缀),所以我猜错误可能来自那些生成的新路由,但是,老实说,我很困惑这个错误怎么会出现在一个控制器中很久没变了。
这是我的控制器代码:
ContractController.php
/**
* @Route("/contract")
*/
class ContractController extends AbstractController
/**
* @Route("/edit/id", name="contract_edit", methods="GET","POST")
*/
public function edit(Request $request, DocumentManagerService $dm, EventDispatcherInterface $dispatcher, Contract $contract): Response
访问/contract/edit/1234
时出现此错误:
@ParamConverter 注释未找到 App\Entity\Contract 对象。
如果我添加一个@ParamConverter 注释,像这样:
* @ParamConverter("contract", options="mapping": "id" : "id")
我得到同样的错误。同样的错误发生在同一控制器中的其他路由上,正如我所说的所有这些路由以前都在工作。
如果我在控制台中debug:router
,我会得到以/contract
为前缀的路由命中,它们都在这个控制器中。
contract_debug GET ANY ANY /contract/debugcontract/show/id
contract_debug_edit GET|POST ANY ANY /contract/debugcontract/edit/id
contract_debug_renew GET|POST ANY ANY /contract/debugcontract/renew/id
contract_index GET ANY ANY /contract/list
contract_new GET|POST ANY ANY /contract/new/client_id
contract_edit GET|POST ANY ANY /contract/edit/id
contract_add_payment GET|POST ANY ANY /contract/addpayment/id/renew/cardid
contract_payment_delete GET ANY ANY /contract/deletepayment/id
contract_show GET ANY ANY /contract/show/id
contract_send_and_block GET ANY ANY /contract/send/id
contract_protect GET ANY ANY /contract/protect/id/protect
contract_generate_invoice GET ANY ANY /contract/invoice/id/send
【问题讨论】:
查看您的路线申报顺序:***.com/a/68541312/4820276 【参考方案1】:我发现了错误,它与路由无关。
我为此实体创建了一个新的ContractRepository
类,并复制/粘贴了基本代码,结果如下:
class ContractRepository extends ServiceEntityRepository
public function __construct(ManagerRegistry $registry)
parent::__construct($registry, Client::class);
我正在向构造函数发送另一个实体类,它应该是 Contract,而不是 Client。
【讨论】:
以上是关于@ParamConverter 注解找不到实体对象的主要内容,如果未能解决你的问题,请参考以下文章
从 $_POST 请求(不是来自 URL)使用 ParamConverter
Hibernate3使用注解出现 javax/persistence/Entity找不到的错误
+entityForName: 找不到实体名称的 NSManagedObjectModel