【发布时间】:2015-07-12 20:11:51
【问题描述】:
在我的 Symfony2 应用程序中,我有一个表单订阅,其中包含使用相同实体地址的 2 个子表单。 我正在寻找一种解决方案,仅在未选中复选框时才验证第二种形式。由于子表单属于同一实体,因此验证约束是相同的。 Assert\Valid 实体不能带组参数,所以我不能使用这个解决方案。
订阅类型.php
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('billingAddress', new AddressType())
->add('shippingSame', 'checkbox', array(
'mapped' => false,
'data' => true,
))
->add('shippingAddress', new AddressType())
;
}
Adress.php 实体
class Address
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="firstname", type="string", length=255, nullable=false)
* @Assert\NotBlank()
*/
private $firstname;
/**
* @var string
*
* @ORM\Column(name="line1", type="string", length=255, nullable=false)
* @Assert\NotBlank()
*/
private $line1;
}
Suscription.php 条目
class Subscription
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Shop\Address")
* @ORM\JoinColumn(nullable=false)
*/
private $billingAddress;
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Shop\Address")
* @ORM\JoinColumn(nullable=false)
*/
private $shippingAddress;
}
所以,我只想在未选中未映射复选框的情况下验证第二个地址。
感谢您的帮助!
【问题讨论】:
标签: forms validation symfony