2

我有两个实体:“事件”和“事件图像”。一个事件可以有多个图像。

这是在事件表上定义的关系:

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

我究竟做错了什么?

4

2 回答 2

2

在你EventImageAdmin不需要的id领域也sonata_type_model_list用于imagePath

  $formMapper
        ->add('imagePath', 'sonata_type_model_list', array('required' => false));

在您EventAdmin定义的函数的第四个参数中的admin_code服务IDEventImageAdmin$formMapperadd()

$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

于 2015-02-23T05:16:29.973 回答
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'
            ))
于 2015-02-19T10:09:27.100 回答