0

我正在尝试显示数据库中的数据。

这是我的路由:

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 %}

它什么也没显示,我做错了什么?

4

3 回答 3

0

该方法find()将只返回一个结果,而不是数组。如果你这样做了,findBy(array('id'=>$id))那么你会得到一个返回一个结果的数组。或者,您可以不循环遍历您的模板,因为当您只有一个结果时没有必要。只需将变量名称更改为 page 并使用{{ page.page_title }}

于 2013-10-18T09:18:11.247 回答
0

您使用了两个不同的实体。一个在其中getRepository('DprocMainBundle:Pages'),另一个在渲染中('DprocMainBundle: Dproc:single.html.twig',array('pages' => $page))。您应该将相同的实体放在那里,即DprocMainBundle:Pages. 我希望你成功。

于 2016-08-18T12:43:52.967 回答
0

尝试不使用 for 循环。因为你已经从数据库中发布数据,你可以试试这个:

{{ pages.page_title }}
于 2016-12-11T18:30:09.803 回答