Symfony2在细枝模板中显示相关实体属性
假设我有一个Product类和一个Category类。每个产品有一个类别。在产品列表上(通过调用Symfony2在细枝模板中显示相关实体属性,symfony,doctrine-orm,twig,Symfony,Doctrine Orm,Twig,假设我有一个Product类和一个Category类。每个产品有一个类别。在产品列表上(通过调用php-app/console-doctor:generate:crud生成),我想显示每个产品的类别名称。然而,到目前为止我所尝试的一切都不起作用 我正在使用KnpPaginatorBundle(不知道它是否有区别) 以下是控制器内部的代码: // ProductController.php public function indexAction(Request $request) { $
php-app/console-doctor: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 %}
但我得到了以下错误:
第16行MyMainBundle:Product:index.html.twig中不存在对象“My\MainBundle\Entity\Product”的方法“category”
我已尝试将LEFT JOIN p.category
添加到我的查询中,但没有成功
我尝试将{{entity.category}}
替换为{{entity.category.name}
,在这种情况下,我得到:
第16行的MyMainBundle:Product:index.html.twig中不存在对象“代理\uuuuu CG\uuu\ My\MainBundle\Entity\Category”的方法“名称”
我尝试用{{entity.getCategory}}
替换{{entity.getCategory}}
,在这种情况下,我得到:
第16行MyMainBundle:Product:index.html.twig中不存在对象“My\MainBundle\Entity\Product”的方法“getCategory”
我尝试将{{entity.category}}
替换为{{entity.getCategory()}}
,在这种情况下,我得到:
MyMainBundle:Product:index.html.twig第16行的值为“”的意外标记“name”(“应为打印结束语句”)
如何显示类别名称?我注意到在您的两条错误消息中: 第16行MyMainBundle:Product:index.html.twig中不存在对象“My\MainBundle\Entity\Product”的方法“category” 及 第16行MyMainBundle:Product:index.html.twig中不存在对象“Proxies\CG\uu\My\MainBundle\Entity\Category”的方法“name” 方法名称和下面的
“
之间有一个空格
以前,当我太快地键入代码时,这种情况就发生了:在键入属性名称后的空格之前,我按下键使细枝}
,因此我在属性和}
之间有一个不间断的空格,细枝不喜欢该空格,并将其作为属性名称的一部分
检查在
}
之前的代码中是否没有不间断的空格。似乎关联的定义不正确。完全正确。我使用的是法语键盘(),所以我必须使用AltGr来键入结束的花括号。结果是我过早地按了AltGr一个字符,在Ubuntu中,AltGr+空格会产生一个不间断的空格。我在阅读你的文章之前发现了这个不间断的空格,但StackOverflow不允许我在发布后8小时内回答我自己的问题。
public function __toString()
{
return $this->getName();
}