繁体   English   中英

无法使用 @ParamConverter 声明自动装配实体参数

[英]Cannot autowire entity argument with @ParamConverter declaration

我遇到了@ParamConverter 的问题。 检测到实体 arguments,例如“服务”。

我认为多重路由 arguments 和 @ParamConverter 是这个问题的责任者。

我试图停用auto_convert中的sensio_framework_extra选项但没有成功。

Cannot autowire argument $category of "App\Controller\Front\QuestionController::showRandomAction()": it references class "App\Entity\Category" but no such service exists.

sensio_framework_extra.yaml

sensio_framework_extra:
    router:
        annotations: false
    request:
        converters: true
        auto_convert: false

Controller

/**
 * @Route("/{id}/{slug}/", name="app_front_question_show", methods={"GET", "POST"})
 * @ParamConverter(name="category", class="App\Entity\Category", options={"mapping": {"slug": "slug"}})
 * @ParamConverter(name="question", class="App\Entity\Question", options={"mapping": {"id": "id"}})
*/
public function showAction(
   Request $request,
   Category $category,
   Question $question,
   AnswerRepository $answerRepository,
   ReportQuestionManager $reportQuestionManager
) {
    // ...
}

堆:

* Symfony 4.4

这是因为您正在使用参数转换器并使用auto_convert: false停用它们。 您可以查看文档“您可以通过将 auto_convert 标志设置为 false 来禁用类型提示方法 arguments 功能的自动转换”

感谢您的回复,但巴蒂斯特是对的。

我设法通过更正 ParamConverter 注释来做我想做的事。

/**
 * @Route("/{id}/{slug}/", name="app_front_question_show", methods={"GET", "POST"})
 * @ParamConverter("category", class="App\Entity\Category", options={"mapping": {"slug": "slug"}})
 * @ParamConverter("question", class="App\Entity\Question", options={"mapping": {"id": "id"}})
*/
public function showAction(
   Request $request,
   Category $category,
   Question $question,
   AnswerRepository $answerRepository,
   ReportQuestionManager $reportQuestionManager
) {
    // ...
}

我不应该把“name=''”

auto_convert: false很好,做我想做的事

我关闭帖子。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM