首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >symfony2多到多奏鸣曲管理model_list

问symfony2多到多奏鸣曲管理model_list
EN

Stack Overflow用户
提问于 2014-02-28 14:51:48
回答 1查看 1.8K关注 0票数 5

我正在使用最新的Symfony2和Sonata来维护我的站点,这是我的问题:

我有两个实体:商店和折扣。一个商店可以有许多折扣,一个折扣可以分配给多个商店。因此,它应该是多到多关系。

我想使用sonatata`s的type_model_list in ShopAdmin,这样我就可以从弹出窗口中选择这些折扣并选择多个。这个是可能的吗?

这是我商店实体的一部分:

代码语言:javascript
复制
use Doctrine\Common\Collections\ArrayCollection;   
 ...
/**
 * @var \Doctrine\Common\Collections\ArrayCollection
 * @ORM\ManyToMany(targetEntity="ShoppingFever\ShoppingFeverBundle\Entity\Discount", fetch="EAGER")
 * @ORM\JoinColumn(name="discountId", referencedColumnName="id")
 */
private $discountId;

这是函数configureFormFields的相对configureFormFields:

代码语言:javascript
复制
$formMapper
        ->add('shopName',null, array('label' => 'Název obchodu'))
        ->add('brandName',null, array('label' => 'Název brandu'))
        ->add('discountId', 'sonata_type_model_list', array(
            'btn_add'       => 'Add discount',      //Specify a custom label
            'btn_list'      => 'button.list',     //which will be translated
            'btn_delete'    => false,             //or hide the button.
            'btn_catalogue' => 'SonataNewsBundle' //Custom translation domain for buttons
        ), array(
            'placeholder' => 'Nothing selected',
            'expanded' => true, 'multiple' => true, 'by_reference' => false
        ))
        ->add('street',null, array('label' => 'Ulice'))
        ->add('city',null, array('label' => 'Město'))
        ->add('zip',null, array('label' => 'PSČ'))
        ->add('gps',null, array('label' => 'GPS'))
        ->add('openingHours','textarea', array('label' => 'Otevírací doba'))
        ->add('eventId',null, array('required'=>false,'label' => 'Event'));

如果我有一到多关系(任何商店的折扣),管理工作。Symfony生成了折扣和商店ids的引用表,用于(多到多个)。

这是的一对多的输出,我希望这对很多人都适用,所以现在说施华洛世奇的地方会有几个折扣。

​

​

也可以用很多人来做吗?

EN

回答 1

Stack Overflow用户

发布于 2019-02-18 12:31:26

不能将sonata_type_model_list与多到多关系一起使用。

您可以做的是使用sonata_type_model并将选项multiple设置为true

代码语言:javascript
复制
->add('discountId', 'sonata_type_model', array(
    'multiple' => true,
    // other options
))

对于当前版本的SonataAdminBundle (截至今天的2019-02-18,它是3.x),示例应该如下所示:

代码语言:javascript
复制
// import ModelType
use Sonata\AdminBundle\Form\Type\ModelType;

// code example
->add('discountId', ModelType::class, [
    'multiple' => true,
    // other options
])

这将创建一个下拉列表来选择多个相关对象,添加新的按钮(或者添加折扣,如果您设置了低谷btn_add)来创建一个新的相关对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22098401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档