猿问

制作一个包含两个单独值的表单类型,您可以使用 symfony 4 多次添加

我是 Symfony 的新手,我想使用 symfony 4 做一些事情。为了简化它,假设我有一个购物篮,我可以在其中添加或删除文章并选择我选择的每篇文章的数量。


所以在学说方面我有三个实体:


class Basket {

   protected $id;

   protected $name;

}


class Article{

   protected $id;

   protected $name;

}


class Buying {

   //ManyToOne

   protected $basket;

   //ManyToOne

   protected $article;


   protected $count;

}

我已经通过手动制作 HTML 并使用一些讨厌的 JS 代码来完成此表单,但现在我想使用 Symfony 4 的表单来制作此表单。


我认为最好的方法是为该“购买”实体创建我自己的表单类型,该实体将有两个字段,其中一个是包含每篇文章的 Select,另一个是 $count 值,然后有可能添加尽可能多的“购买”,但我想不出这样做的方法,而且文档似乎没有涵盖这种情况。


四季花海
浏览 73回答 1
1回答

精慕HU

为此,您需要几种表单类型,并且您可能需要稍微调整一下您的实体。这是它的要点:首先,您需要为每件购买的商品及其数量配备一个。这EntityType将为您select提供所有文章,正是您正在寻找的内容。// BuyingType.php$builder->add('article', EntityType::class, ['class' => Article::class]);$builder->add('count', NumberType::class, [    'constraints' => [        new Count(['min' => 1]),      ],]);第二个将CollectionType代表整个篮子。// BasketType.php$builder->add('basket', CollectionType::class, [    'entry_type' => BuyingType::class,    'allow_add' => true,    'allow_delete' => true,]);
随时随地看视频慕课网APP
我要回答