[英]Symfony key array in twig
我想显示一个实体的信息。
具有该信息的实体与另一个实体相关,因此我使用查询来获取该信息。
class Playlist
{
private $id;
private $name;
private $items;
public function __construct()
{
$this->items = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addItem(\Publicartel\AppBundle\Entity\PlaylistContent $content)
{
$content->setPlaylist($this);
$this->items->add($content);
return $this;
}
public function removeItem(\Publicartel\AppBundle\Entity\PlaylistContent $content)
{
$this->items->removeElement($content);
}
public function getItems()
{
return $this->items;
}
}
class PlaylistContent
{
private $content;
public function setContent(\Publicartel\AppBundle\Entity\Content $content = null)
{
$this->content = $content;
return $this;
}
public function getContent()
{
return $this->content;
}
}
//控制器:
$playlists = $em->getRepository('PublicartelAppBundle:Playlist')->getAllPlaylist();
return $this->render('PublicartelAppBundle:Player:calendar.html.twig', array(
'playlists' => $playlists,
));
//查询
public function getAllPlaylist()
{
$em = $this->getEntityManager();
$dql = 'SELECT p, cnt, plc FROM Publicartel\AppBundle\Entity\Playlist p
LEFT JOIN p.items cnt
LEFT JOIN cnt.content plc';
$query = $this->getEntityManager()
->createQuery($dql)
->setHydrationMode(\Doctrine\ORM\Query::HYDRATE_ARRAY);
return $query->execute();
}
协商会查找内容实体的元素,因此它需要在“项”和“内容”上进行左连接。
//树枝模板
我试图通过两种方式访问该元素:
{% for playlist in playlists.items.content %}
<img src="/{{ playlist.path}}">
{% endfor %}
第215行的PublicartelAppBundle:Player:calendar.html.twig中不存在具有键“ 0,1”的数组的键“项目”
{% for playlist in playlists %}
<img src="/{{ playlist.items.content.path }}">
{% endfor %}
第223行的PublicartelAppBundle:Player:calendar.html.twig中不存在带有键“ 0、1”的数组的键“内容”
“路径”是我要显示的实体“内容”的属性。
我猜你需要像这样循环:
{% for playlistContent in playlists.items %}
{% if playlistContent.content is not null %}
<img src="/{{ playlistContent.content.path }}">
{% endif %}
{% endfor %}
编辑 :
发现:
{% for playlist in playlists %}
{% for playlistContent in playlist.items %}
<img src="/{{ playlistContent.content.screenshot}}">
<img src="/{{ playlistContent.content.path}}">
{% endfor %}
{% endfor %}
playlists.items是对象数组,而不是对象。 因此,您必须遍历它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.