sonata sonata_type_collection显示表

时间:2015-02-19 06:25:24

标签: symfony sonata-admin sonata sonata-media-bundle

我有两个实体:“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记录的级联列表,没有在表格中格式化,没有“添加新行”选项。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

EventImageAdmin中,id字段也不需要使用sonata_type_model_listimagePath

  $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'
            ))