Symfony 3:渲染过程中抛出异常

Posted

技术标签:

【中文标题】Symfony 3:渲染过程中抛出异常【英文标题】:Symfony 3: An exception has been thrown during the rendering 【发布时间】:2013-08-12 09:26:24 【问题描述】:

我得到的完整错误是这个。

An exception has been thrown during the rendering of a template ("Some mandatory parameters are missing ("id") to generate a URL for route "FooBlogBundle_articles".") in "FooBlogBundle:Article:articles.html.twig".

这是处理动作的控制器:

 public function articlesAction($id)
    
        $em = $this->getDoctrine()->getManager();
            $blog = $em->getRepository('FooBlogBundle:Blog')->find($id);

        if(!$em)
            throw $this->createNotFoundException('Unable to find blog posti');
        

        return $this->render('FooBlogBundle:Article:articles.html.twig', ['blog'=>$blog]);
    

和路由

FlickBlogBundle_articles:
    pattern:  /foo/id
    defaults:  _controller: FooBlogBundle:Article:articles 
    requirements:
      _method: GET
      id: \d+

Twig 和数据库,完全正常,没有类型或问题。但是这个错误很难发现,我哪里出错了。

编辑:包括模板:

% extends 'FooBlogBundle::layout.html.twig' %

% block body %
 blog.title <br/>
 blog.author <br/>
 blog.blog <br/>
 blog.tags <br/>
 blog.comments 

% endblock %

上面的模板位于views/article/ 它扩展了在views/ 找到的另一个模板 这只是

% extends 'FooBlogBundle::layout.html.twig' %

【问题讨论】:

【参考方案1】:

FooBlogBundle:Article:articles.html.twig 模板中,您有类似 path(FlickBlogBundle_articles) 的内容(无法准确判断,因为我没有看到模板)。此路由需要附加参数id。所以改成 path(FlickBlogBundle_articles, 'id':article.id)

【讨论】:

嗨,我会试试这个,我不知道怎么做,但我已经更新了我的问题以包含所涉及的模板 可能是FooBlogBundle::layout.html.twig?搜索你生成链接的地方FlickBlogBundle_articles 我正在关注本教程tutorial.symblog.co.uk/docs/doctrine-2-the-blog-model.html。并完全按照那里显示的那样制作。我找不到你提到的用于生成数据的模板的path()方法,除了菜单和表单重定向【参考方案2】:

我遇到了同样的错误,在我的情况下,我忘记为我的私人外键设置公共 Getters 和 Setters:

/**
 * @var Provider
 *
 * @ORM\ManyToOne(targetEntity="Provider")
 * @ORM\JoinColumn(name="fk_provider", referencedColumnName="id", nullable=true)
 */
private $fkProvider;

/**
 * @return Provider
 */
public function getFkProvider()

    return $this->fkProvider;


/**
 * @param Provider $fkProvider
 */
public function setFkProvider($fkProvider)

    $this->fkProvider = $fkProvider;

【讨论】:

以上是关于Symfony 3:渲染过程中抛出异常的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony2 中抛出 403 异常?

java中 方法中抛出异常处理方法

MySql PDO 和二级内部过程调用中抛出的异常

HibernateSearch、JPA、H2驱动在数据库索引过程中抛出异常

返回带有错误的响应,而不是在验证管道 mediatr 3 中抛出异常

抛出异常