我正在使用最新的Symfony2和Sonata来维护我的站点,这是我的问题:
我有两个实体:商店和折扣。一个商店可以有许多折扣,一个折扣可以分配给多个商店。因此,它应该是多到多关系。
我想使用sonatata`s的type_model_list in ShopAdmin,这样我就可以从弹出窗口中选择这些折扣并选择多个。这个是可能的吗?
这是我商店实体的一部分:
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:
$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的引用表,用于(多到多个)。
这是的一对多的输出,我希望这对很多人都适用,所以现在说施华洛世奇的地方会有几个折扣。

也可以用很多人来做吗?
发布于 2019-02-18 12:31:26
不能将sonata_type_model_list与多到多关系一起使用。
您可以做的是使用sonata_type_model并将选项multiple设置为true
->add('discountId', 'sonata_type_model', array(
'multiple' => true,
// other options
))对于当前版本的SonataAdminBundle (截至今天的2019-02-18,它是3.x),示例应该如下所示:
// import ModelType
use Sonata\AdminBundle\Form\Type\ModelType;
// code example
->add('discountId', ModelType::class, [
'multiple' => true,
// other options
])这将创建一个下拉列表来选择多个相关对象,添加新的按钮(或者添加折扣,如果您设置了低谷btn_add)来创建一个新的相关对象。
https://stackoverflow.com/questions/22098401
复制相似问题