我有一个实体类quote
,其字段为amount
,此字段应小于在控制器的newAction中设置的动态值。
我在formtype类中添加了amount字段,其中的My buildForm方法如下
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('truckType')
->add('costPerTruck')
->add('amount');
$builder->addEventSubscriber(new AddQuoteDetailFieldSubscriber());
}
我的订阅者类如下
class AddQuoteDetailFieldSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return array(FormEvents::PRE_SET_DATA => 'preSetData');
}
public function preSetData(FormEvent $event)
{
$product = $event->getData();
$form = $event->getForm();
if (null !== $product && null !== $product->getLimit()) {
if($product->getLimit() > 0){
$form->add('amount',null, array(
'data' => $product->getLimit(),
'constraints' => array(
new LessThanOrEqual(array('value' => $product->getLimit())),
)));
}
}
}
}
问题是限制是正确设置并显示在金额字段中,但约束似乎没有做任何事情,并且让值大于限制值。
如果我在buildForm方法中添加限制,如
$builder
->add('truckType')
->add('costPerTruck')
->add('amount',null,array('constraints' => array(
new LessThanOrEqual(array('value' => 10)),
)));
然后这个领域受到限制。
用这个撞到我的头撞墙,有没有人知道我做错了什么?或任何其他方式来实现这一目标?
谢谢!