我得到的完整错误就是这个错误。
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' %}
答案 0 :(得分:3)
在FooBlogBundle:Article:articles.html.twig
模板中,您有类似{{ path(FlickBlogBundle_articles) }}
的内容(由于我没有看到模板,因此无法确切说明)。此路线需要额外的参数id
。所以将其更改为{{ path(FlickBlogBundle_articles, {'id':article.id}) }}
答案 1 :(得分:1)
我得到了同样的错误,在我的情况下,我忘了设置公共Getters&amp;我的私人外键的塞特犬:
/**
* @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;
}