Symfony 4 - 在Profiler中@ParamConverter注释无法找到对象

4

问题只出现在调试工具栏中。

以下是我怀疑引起问题的代码:

/**
   * @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中删除内容,它仍然可以工作,但错误会出现在Category上。

提前感谢。

编辑:PHP 7.1.9
Composer 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"
},

我的错,只是路由的问题。 - Sinuide
1个回答

1
我在网上看到了很多与你的错误相关的错误,并且也遇到了这个问题。 我正在使用CRUD,我的URL与先前的某个路由匹配。
我只是发现这个命令 php bin/console router:match url 通过给出它使用的路由以及如何匹配它来帮助我。 我认为这非常有用,应该分享。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接