我有两个实体:“Event”和“EventImage”。一个事件可以有多个图像。
这是事件表中定义的关系:
**
* Event
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\EventRepository")
*/
class Event
{
/**
* @ORM\OneToMany(targetEntity="EventImage", mappedBy="event")
*/
protected $eventImages;
}
这是在EventImage表上定义的关系:
/**
* EventImage
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="AppBundle\Entity\EventImageRepository")
*/
class EventImage
{
/**
* @ORM\ManyToOne(targetEntity="Event", inversedBy="eventImages")
* @ORM\JoinColumn(name="event_id", referencedColumnName="id")
*/
protected $event;
}
和我在EventAdmin中的“configureFormFields”
$formMapper
->add('eventImages', 'sonata_type_collection',array(), array(
'edit' => 'inline',
'inline' => 'standard',
'sortable' => 'listOrder'
))
和在我的“”中的EventImageAdmin
$formMapper
->add('id')
->add('imagePath', 'text')
->end()
;
现在我看到了一些示例,你可以在哪里获得一个很好的格式化表,每个拉出的记录连续一行,有一个复选框来删除行和拖动选项,还有“添加新行”按钮来链接一个新元素(或添加一个新元素)
但我得到的是一个关联的eventImage记录的级联列表,没有在表格中格式化,没有“添加新行”选项。
我做错了什么?
答案 0 :(得分:2)
在EventImageAdmin
中,id
字段也不需要使用sonata_type_model_list
来imagePath
$formMapper
->add('imagePath', 'sonata_type_model_list', array('required' => false));
在EventAdmin
admin_code
函数
EventImageAdmin
定义$formMapper
服务ID为add()
$formMapper
->add( 'eventImages', 'sonata_type_collection', array(
'cascade_validation' => false,
'type_options' => array( 'delete' => false ),
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'link_parameters' => array( 'context' => 'define context from which you want to select media or else just add default' ),
'admin_code' => 'sonata.admin.your_service_id_here'
/*here provide service name for junction admin */
)
);
有关详情,请参阅我关于Handling multiple file uploads in Sonata Admin Bundle
答案 1 :(得分:1)
你错过了一些选择。试试这个:
->add('eventImages', 'sonata_type_collection', array(
'by_reference' => true,
'label' => false,
'type_options' => array('delete' => true),
'cascade_validation' => true,
'btn_add' => 'Add new EventImages',
"required" => false ), array(
'edit' => 'inline',
'inline' => 'table'
))