我有以下查询:
function indexAction()
{
$u = $this->getDoctrine()->getRepository("AppBundle:Users")->findAll( \Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY );
return $this->render("default/test.html.twig", ["users" => $u]);
}
然后我在Twig Template中使用这个循环遍历它:
{% for item in users %}
<li>{{ item.email }} : </li>
{% endfor %}
我遇到了这个错误:
Impossible to access a key "name" on an object of class "AppBundle\Entity\Users" that does not implement ArrayAccess interface in default/test.html.twig at line
答案 0 :(得分:1)
出了点问题。您将users
变量传递给模板,但在myItems
循环中使用了for
。
试试这个:
{% for item in users %}
{{ dump(item) }}<br />
{% endfor %}
答案 1 :(得分:0)
您的类是否在实体定义中实现了ArrayAccess?
class Foo implements ArrayAccess
您必须在班级中添加多个方法才能实现此目的:
要实现ArrayAccess,您需要实现四个方法:offsetExists,offsetGet,offsetSet和offsetUnset。 ArrayAccess :: offsetExists必须返回一个布尔值,offsetGet可以返回任何有效的PHP类型,而offsetSet和offsetUnset不应该返回任何值。实现这些方法后,您可以将对象视为一个数组,以便保存和检索属性
更多详情here。