我是symfony2的新手,我正在用它創建我的第一家網上商店。我有產品,我想添加產品尺寸,一種產品可以有多種尺寸,一種尺寸可以有多種產品。例如:兩個產品貓都有'M'尺寸。產品和尺寸symfony2原則示例
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()
但我不知道這是否是正確的做法,如果我這樣做,在編輯產品時,下拉列表不會選擇正確的大小。
我的問題是,這是正確的方式來實現產品尺寸功能的網上商店?
'choice_label選項是在Symfony 2.7中引入的。在Symfony 2.7之前,它被稱爲屬性(它具有相同的功能)。http://symfony.com/doc/current/reference/forms/types/entity.html#choice-label – nacholibre
哦,我明白了,這就是我的錯 - 忘了這件事。 –
關於在編輯時選擇錯誤的尺寸:如果您在字段選項中未提供「choice_value」,可能會出現問題。來自doc:「default爲null,如果使用null,則使用遞增整數作爲名稱。」請參閱:https://github.com/symfony/symfony/pull/14825 –