Symfony 4 - Объект не найден по аннотации @ParamConverter только в Profiler

Проблема появляется только на панели инструментов отладки.

Вот код, который, как я подозреваю, вызывает проблему

/**
   * @Route("/{category_slug}/{slug}", name="content_show")
   * @ParamConverter("content", options={"mapping": {"slug": "slug"}})
   * @ParamConverter("category", options={"mapping": {"category_slug": "slug"}})
   * @Method("GET")
   */
  public function show(Category $category, Content $content): Response
  {
    $contents = $category->getContents();
    return $this->render('content/show.html.twig', array(
      'category' => $category,
      'list' => $contents,
      'content' => $content,
    ));
  }

Это единственная часть с ParamConverter и единственная измененная часть до ошибки.

Страница отображается правильно, все найдено, ошибка, панель инструментов отладки больше не работает с сообщением:

An error occurred while loading the web debug toolbar. Open the web profiler.

И внутри:

App\Entity\Content object not found by the @ParamConverter annotation.

С исключением NotFoundHttpException

Почистил кеш, ничего не изменилось. Код все еще работает, но панель инструментов не доставляет неудобств, и я не могу понять, в чем причина.

Я пробовал с другими аннотациями, такими как:

  /**
    * @Route("/{category_slug}/{slug}", name="content_show")
    * @ParamConverter("category", class="App\Entity\Category", options={"mapping": {"category_slug": "slug"}})
    * @Method("GET")
    */

И т.д.. Разница только в том, что если я удалю контент из paramconverter, он все равно будет работать, но ошибка будет в категории.

Заранее спасибо.

Изменить: PHP 7.1.9
Композитор json:

"require": {
    "php": "^7.1.3",
    "ext-iconv": "*",
    "sensio/framework-extra-bundle": "^5.1",
    "symfony/apache-pack": "^1.0",
    "symfony/console": "^4.0",
    "symfony/expression-language": "^4.0",
    "symfony/flex": "^1.0",
    "symfony/form": "^4.0",
    "symfony/framework-bundle": "^4.0",
    "symfony/lts": "^4@dev",
    "symfony/maker-bundle": "^1.0",
    "symfony/orm-pack": "^1.0",
    "symfony/security-bundle": "^4.0",
    "symfony/security-csrf": "^4.0",
    "symfony/twig-bundle": "^4.0",
    "symfony/validator": "^4.0",
    "symfony/yaml": "^4.0",
    "vich/uploader-bundle": "^1.8"
},
"require-dev": {
    "symfony/dotenv": "^4.0",
    "symfony/profiler-pack": "^1.0",
    "symfony/web-server-bundle": "^4.0"
},

person Sinuide    schedule 25.01.2018    source источник
comment
Мой плохой, просто проблема с маршрутом.   -  person Sinuide    schedule 27.01.2018


Ответы (1)


Я видел много ошибок в Интернете, связанных с вашей, и я также столкнулся с этим, я использовал CRUD, и мой URL-адрес совпадал с одним из предыдущих маршрутов.

Я просто обнаружил, что эта команда php bin/console router:match url помогла мне, указав, какой маршрут она использует и как она соответствует. Я думаю, что это действительно полезно и должно быть распространено.

person Samuel RIGAUD    schedule 06.04.2020