【发布时间】:2016-02-07 16:49:29
【问题描述】:
我在尝试创建表单时遇到问题,其他主题无法帮助我。这就是我想要做的。
这是我的数据库方案的一部分:
现在我想创建一个表单,我可以在其中创建课程。在该课程中,我想创建多个会话,我可以在其中添加日期附加到它们。应该是这样的:
在我的课程实体中,我有:
/**
* @ORM\OneToMany(targetEntity="Session", mappedBy="Course")
*/
private $session;
public function getSession()
{
return $this->session;
}
在我的会话实体中,我有:
/**
* @var \Studyx\EnrolmentBundle\Entity\Course
*
* @ORM\ManyToOne(targetEntity="Studyx\EnrolmentBundle\Entity\Course")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="course_ID", referencedColumnName="ID")
* })
*/
private $course;
在我的 CourseAdmin 课程中我有:
->add('session', 'sonata_type_collection', array(
'type_options' => array(
// Prevents the "Delete" option from being displayed
'delete' => false,
'delete_options' => array(
// You may otherwise choose to put the field but hide it
'type' => 'hidden',
// In that case, you need to fill in the options as well
'type_options' => array(
'mapped' => false,
'required' => false,
)
)
)
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position'
))
在我的表单中,我看到了“添加新”按钮,但是当我点击它时,我得到了错误:
属性“session”和方法“addSession()”、“setSession()”、“__set()”或“__call()”都不存在,并且在类“Name\MyBundle\Entity”中具有公共访问权限\课程”。
我明白了。但我怎样才能使这项工作?我应该将关系更改为 many-to-many 还是使用另一个字段或 ... ?有人可以帮我解决这个问题吗?
更新:
在我的 SessionAdmin 我有:
$formMapper->add('type', 'text', array('label' => 'Type'));
问题是我真的不知道如何在这个管理表单中耦合 session_has_date ...。
【问题讨论】:
-
您可以尝试使用
by_reference => false选项吗?你有 Session 目标类的管理类吗? -
@chalasr: 尝试使用 by_reference => false 但同样的错误。用 Session Admin Class 更新了我的主题。
标签: php symfony doctrine-orm sonata-admin sonata