我正在尝试显示数据库中的数据。
这是我的路线:
pages:
pattern: /pages/{id}
defaults:
_controller: DprocMainBundle:Index:show
这是该路线的方法:
public function showAction($id)
{
$page = $this->getDoctrine()
->getRepository('DprocMainBundle:Pages')
->find($id);
if (!$page) {
throw $this->createNotFoundException('No product found for id '.$id);
}
return $this->render('DprocMainBundle:Dproc:single.html.twig',array('pages' => $page));
}
print_r($ page)显示:
Dproc\MainBundle\Entity\Pages Object
(
[Id:protected] => 1
[page_title:protected] => A Foo Bar
[page_content:protected] => Test content for page
[page_category:protected] => 3dsmax
)
在single.html.twig中我试图显示该信息:
{% for page in pages %}
{{ page.page_title }}
{% endfor %}
它没有显示,我做错了什么?
答案 0 :(得分:0)
方法find()
只返回一个结果,而不是一个数组。如果你做了findBy(array('id'=>$id))
那么你会得到一个带有一个结果的数组。或者,您可以不在模板中循环,因为当您只有一个结果时就没有必要。只需将变量名称更改为页面并使用{{ page.page_title }}
答案 1 :(得分:0)
你使用了两个不同的实体..一个在getRepository('DprocMainBundle:Pages')
,另一个在渲染中(' DprocMainBundle:Dproc
:single.html.twig',数组(&#39) ; pages' => $ page))。你应该把同一个实体放在那里,DprocMainBundle:Pages
。我希望你成功。
答案 2 :(得分:0)
没有for循环尝试它。因为您有来自数据库的发布数据,所以可以尝试:
{{ pages.page_title }}