簡體   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