2015-07-27 6 views
1

У меня есть форма, содержащую объект с коллекцией:Symfony2 форма не сохраняется пустой коллекция

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('name', 'text') 
     ->add('fichiers', 'collection', array(
      'type' => new FichierType(), 
      'allow_add' => true, 
      'allow_delete' => true, 
      'by_reference' => false 
     )) 
    ; 
} 

Но эта коллекция содержит 4 нон обязательного поля:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('url', 'text', array(
      'required' => false 
     )) 
     ->add('name', 'text', array(
      'required' => false 
     )) 
     ->add('size', 'text', array(
      'required' => false 
     )) 
     ->add('type', 'text', array(
      'required' => false 
     )) 
    ; 
} 

Но если я Сверяю form, я не хочу вставлять коллекцию, потому что все поля имеют значение null:

Исключение произошло при выполнении 'INSERT INTO fichier (url, name, size, type, groupe_id) VALUES (,,)»с Params [NULL, NULL, NULL, NULL, 2]:???

+0

Я думаю, это связано с тем, что ваше сопоставление объектов не принимает нулевые значения. Можете ли вы показать нам свое отображение объектов? – Freelancer

+0

Вы также можете добавить 'contraint => Valid()' в тип коллекции родительской формы, чтобы проверка была принудительной для ребенка. http://symfony.com/doc/current/reference/constraints/Valid.html – Rvanlaak

+0

У вас есть решение этой проблемы? –

ответ

0

в файле Fichier Entity, обязательно иметь обнуляемого = истинный аннотацию

как:

/** 
* @var string 
* 
* @ORM\Column(name="foo", type="string", nullable=true) 
*/ 
private $foo; 

А для отображения YAML:

foo: 
     type: string 
     column: foo 
     nullable: true 

в противном случае генерируется дб-схема по умолчанию NULLABLE = ложь, так что вы получите исключение вставки

+0

Спасибо за ваш ответ, но я не хочу поля с нулевым значением :) Все поля не могут быть нулевыми ... но коллекция может это сделать. :) –

Смежные вопросы