2

"Event" と "EventImage" の 2 つのエンティティがあります。1 つのイベントに複数の画像を含めることができます。

これは、イベント テーブルで定義された関係です。

**
* 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はありませんidsonata_type_model_listimagePath

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

の関数の4 番目のパラメーターでのサービス ID をEventAdmin定義します。admin_codeEventImageAdmin$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 に答える