2

我有一个quote具有字段的实体类,amount该字段应小于在控制器的 newAction 中设置的动态值。

我在 formtype 类中添加了 amount 字段,其中我的 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)),
    )));

然后该领域受到限制。

一直用这个把我的头撞到墙上,有没有人知道我做错了什么?或任何其他方式来实现这一目标?

谢谢!

4

0 回答 0