我有一个与另一个调用 Items
相关的实体 Playlist
.
我想部署每个项目的树枝模板ID .
class Playlist
{
private $items;
public function __construct()
{
$this->items = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addItem(\Publicartel\AppBundle\Entity\PlaylistContent $content)
{
$content->setPlaylist($this);
$this->duration += $content->getDuration();
$this->items->add($content);
return $this;
}
public function removeItem(\Publicartel\AppBundle\Entity\PlaylistContent $content)
{
$this->items->removeElement($content);
$this->duration -= $content->getDuration();
}
public function getItems()
{
return $this->items;
}
}
我想在 Playlist
表单中部署项目的ID .
我试过这样:
{% for content in edit_form.items %}
{{ content.getId() }}
{{ content.id() }}
{% endfor %}
但是我收到以下错误:
对象“Symfony \ Component \ Form \ FormView”的方法“getId”不存在对象“Symfony \ Component \ Form \ FormView”的方法“id”不存在
我已将 id
属性添加到我的FormType:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('id')
->add('position')
->add('duration')
->add('playlist')
->add('content')
;
}
但是我收到以下错误:
在呈现模板期间抛出异常(“可捕获的致命错误:类Symfony \ Component \ Form \ FormView的对象无法转换为字符串”)
我也尝试过:
//控制器
$entity = $em->getRepository('PublicartelAppBundle:Playlist')->find($id);
return $this->render('PublicartelAppBundle:Playlist:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
));
// Twig
{{ entity.items.id }}
但这也会引发错误:
对象“Doctrine \ ORM \ PersistentCollection”的方法“id”不存在
谢谢!
1 回答
解决方案1
解决方案的最后一部分是好的
不好的是代码片段
您必须在打印之前循环所有项目
id
out(从您的错误,非常清楚)解决方案2(未测试)
当然,您也可以访问表单底层对象的数据,而无需从控制器传递数据 . 所以你可以改变你的代码片段
从
至
您的错误是您尝试访问
FormView
(从控制器传递)而不是实体"binded"访问表单