我们说我有一个Product类和一个Category类。每个产品都有1个类别。在产品列表(通过调用php app/console doctrine:generate:crud
生成)中,我想显示每个产品的类别名称。然而,到目前为止,我所尝试的一切都无法奏效。
我正在使用KnpPaginatorBundle(不知道它是否有所作为。)
这里是控制器内的代码:
// ProductController.php
public function indexAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT p
FROM MyMainBundle:Product p
ORDER BY p.name'
);
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate($query, $request->query->get('page', 1), 10);
return $this->render('MyMainBundle:Product:index.html.twig', array(
'pagination' => $pagination,
));
}
这里是模板中的代码:
{# index.html.twig #}
{% extends 'MyMainBundle::layout.html.twig' %}
{% block body -%}
<table>
<thead>
<tr>
<th>Name</th>
<th>Category</th>
</tr>
</thead>
<tbody>
{% for entity in pagination %}
<tr>
<td>{{ entity.name }}</td>
<td>{{ entity.category }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{{ knp_pagination_render(pagination) }}
{% endblock %}
我已将__toString()方法添加到Category类:
public function __toString()
{
return $this->getName();
}
但是我收到以下错误:
方法&#34;类别&#34;对象&#34;我的\ MainBundle \ Entity \ Product&#34;在MyMainBundle中不存在:产品:第16行的index.html.twig
我尝试在我的查询中添加LEFT JOIN p.category category
,但无济于事。
我已尝试将{{ entity.category }}
替换为{{ entity.category.name }}
,在这种情况下我得到:
方法&#34;名称&#34; for object&#34; Proxies__CG __ \ My \ MainBundle \ Entity \ Category&#34;在MyMainBundle中不存在:产品:第16行的index.html.twig
我尝试将{{ entity.category }}
替换为{{ entity.getCategory }}
,在这种情况下,我得到了:
方法&#34; getCategory&#34;对象&#34;我的\ MainBundle \ Entity \ Product&#34;在MyMainBundle中不存在:产品:第16行的index.html.twig
我尝试将{{ entity.category }}
替换为{{ entity.getCategory() }}
,在这种情况下,我得到了:
意外的令牌&#34;名称&#34;价值&#34; &#34; (&#34;打印声明结束&#34;预期)在MyMainBundle:产品:index.html.twig第16行
我该如何显示类别名称?
答案 0 :(得分:1)
我在两条错误消息中都注意到了这一点:
方法&#34;类别&#34;对象&#34;我的\ MainBundle \ Entity \ Product&#34;在MyMainBundle中不存在:产品:第16行的index.html.twig
和
方法&#34;名称&#34; for object&#34; Proxies_ CG _ \ My \ MainBundle \ Entity \ Category&#34;在MyMainBundle中不存在:产品:第16行的index.html.twig
方法名称与以下"
之间有空格。
在我输入代码太快之前发生了这件事:在键入属性名称后面的空格之前,我按了键来制作Twig }}
,所以我最终在属性之间有一个不间断的空格以及}}
,Twig不喜欢并将其作为属性名称的一部分。
在}}
之前检查代码中是否有不间断的空格。