【问题标题】:sonata sonata_type_collection display table奏鸣曲 sonata_type_collection 展示表
【发布时间】:2015-04-20 09:58:43
【问题描述】:

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

这是在 Event 表上定义的关系:

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

我做错了什么?

【问题讨论】:

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


    【解决方案1】:

    在您的EventImageAdmin 中,不需要id 字段也可以使用sonata_type_model_list 来表示imagePath

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

    在您的EventAdmin 中,在$formMapperadd() 函数的第四个参数中定义EventImageAdminadmin_code 服务ID

    $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 的另一个答案

    【讨论】:

      【解决方案2】:

      您错过了一些选项。试试这个:

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

      【讨论】:

      • 感谢您的回答,但不幸的是,这不起作用。我仍然得到相同的记录级联,没有添加选项....
      猜你喜欢
      • 1970-01-01
      • 2017-08-09
      • 2015-07-22
      • 1970-01-01
      • 2019-05-17
      • 2018-06-18
      • 2017-04-27
      • 2013-12-04
      • 2015-03-20
      相关资源
      最近更新 更多