我是symfony2的新手,我正在建立我的第一个在线商店。我有产品,我想添加产品尺寸,一种产品可以有多种尺寸,一种尺寸可以有很多产品。例如:两种产品猫有' M'大小
class Product {
...
/**
* @ORM\ManyToMany(targetEntity="Size", inversedBy="products", cascade={"persist", "merge"})
* @ORM\JoinTable(name="sizes")
*/
private $sizes;
}
//in another file
class Size {
/**
* @ORM\ManyToMany(targetEntity="Product", mappedBy="sizes")
*/
protected $products;
}
ProductController.php
...
->add('sizes', CollectionType::class, [
'entry_type' => SizeType::class,
'label' => 'Sizes',
'allow_add' => true,
])
...
SizeType.php
public function buildForm(FormBuilderInterface $builder, array $options) {
$repo = $this->em->getRepository('AppBundle:Size');
$q = $repo->createQueryBuilder('c')
->getQuery();
$sizes = $q->getResult();
$builder->add('name', EntityType::class, array(
'class' => 'AppBundle:Size',
'choice_label' => 'name',
));
}
现在我得到了
Catchable Fatal Error: Object of class AppBundle\Entity\Size could not be converted to string
我可以解决,如果我实施__toString()
但我不知道这是否正确,如果我这样做,在编辑产品时,下拉菜单不会t选择合适的尺寸。
我的问题是,这是将产品尺寸功能实施到网上商店的正确方法吗?
答案 0 :(得分:0)
尝试使用此代码:
$builder->add('name', EntityType::class, array(
'class' => 'AppBundle:Size',
'choice_label' => 'name',
'property' => 'needed_property_name' //just write the needed property name there
));
答案 1 :(得分:0)
所以我已经找到了更好的方法来实现它,'实体'类型有多个=>真
->add('sizes', 'entity', [
'class' => Size::class,
'label' => 'Размери',
'choice_label' => 'name',
'multiple' => true,
'expanded' => false,
//'allow_add' => true,
])
这样可以选择多种尺寸,bootstrap-multiselect我已经看起来很漂亮,现在对我很有用。
我很想知道是否有更好的方式。
答案 2 :(得分:-2)