Symfony — динамически добавлять проверку формы на основе базовых данных

У меня есть класс сущности quote это имеет поле amount и это поле должно быть меньше динамического значения, которое установлено в newAction контроллера.

Я добавляю поле количества в классе formtype, и мой метод 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)),
)));

Тогда поле ограничено.

Этот удар головой о стену, кто-нибудь знает, что я делаю не так? или любой другой способ достижения этого?

Спасибо!

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]