У меня есть класс сущности 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)),
)));
Тогда поле ограничено.
Этот удар головой о стену, кто-нибудь знает, что я делаю не так? или любой другой способ достижения этого?
Спасибо!
Задача ещё не решена.
Других решений пока нет …