Symfony 2.8: неверный аргумент, предоставленный для foreach () в Constraints / FormValidator

Используя компоненты формы Silex 2.0 и Symfony 2.8 (не полный стек sf2), у меня есть форма с несколькими полями и встроенная форма.

При отправке формы я получил ошибку:

Warning: Invalid argument supplied for foreach() in vendor/symfony/form/Extension/Validator/Constraints/FormValidator.php on line 66

Никаких ограничений не было установлено ни для каких полей и форм, однако, в FormValidator.php, при выполнении $config->getOption('constraints'), он возвращает пустой массив для полей но NULL для встраивания формы.

Должны ли ограничения быть также установлены как пустой массив для встраивания формы? Если мы должны установить это вручную, где я должен это сделать?

Вот код:

class DebugPreviewChannelForm extends AbstractType
{
public function __construct(FormFactoryInterface $formFactory)
{
$this->formFactory = $formFactory;
}

public function build(array $data, array $apps)
{
$builder = $this->formFactory->createBuilder(FormType::class, $data);

$builder->add(
'applicationId',
ChoiceType::class,
[
'choices' => $apps,
'label' => 'Application',
'choices_as_values' => true,
]
)
->add('user', UserType::class);

return $builder->getForm();
}
}

class UserType extends FormType implements DataMapperInterface
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->setCompound(true)
->setDataMapper($this)
->add(
'hash',
TextType::class,
['required' => false]
);
}
}

Если я удалю ->add('user', UserType::class)работает отлично.

3

Решение

Мне наконец удалось заставить это работать. Я только что изменил реализацию класса userType.

источник: http://symfony.com/doc/current/cookbook/form/inherit_data_option.html

class UserType extends \Symfony\Component\Form\AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add(
'hash',
TextType::class,
['required' => false]
);
}
}
0

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector