Я пытаюсь получить в прототипе коллекции набор значений по умолчанию вместо пустых значений.В идеале я хотел бы иметь возможность определять эти значения по умолчанию где-либо в классе модели или в классе определения формы, но я не могу найти способ сделать это где-либо еще.
Например:
Я создал AbstractType для своей формы, которая содержит вложенную коллекцию строк Person (соответствующий код показан ниже):
public function buildForm(FormBuilder $builder, array $options)
{
...
$builder->add('people', 'collection', array(
'type' => new PersonType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
));
...
}
Класс PersonType содержит следующий код:
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('name', 'text');
$builder->add('date_of_birth', 'date');
$builder->add('age', 'number');
// This would be great if I could do this but I can't:
//$builder->add('date_of_birth', 'date', array('empty_value' => new \DateTime(...))); // some default value defined here
}
Лучшее, что я смог сделать до сих пор, показано ниже в файле представления (показанный код используется для визуализации прототипа коллекции):
...
<tr>
<td> {{ form_widget(person.name) }} </td>
{# THIS DOES NOT WORK (I just get the default selected date) #}
<td> {{ form_widget(person.date_of_birth, {'value': person.date_of_birth.get('value')|default({'year':2010, 'month':10, 'day':15})} }} </td>
{# THIS WORKS (the field contains '0' instead of being empty) #}
<td> {{ form_widget(person.age, {'value': person.age.get('value')|default(0)} }} </td>
</tr>
...
- Itтолько кажется, что работает с простыми типами, такими как текст и число.Это не работает с типом даты.
- Это в любом случае не похоже на правильный подход.Я должен иметь возможность определить значение по умолчанию / пустое значение либо в базовой модели (например,
protected $age = 10;
внутри класса модели), либо в классе определения формы (AbstractType) (например, массив ('empty_value' => new DateTime ())), но ни один из них в настоящее время невозможен.
Итак, в общем, мой вопрос:
Как определить значения по умолчанию для класса модели, который будет автоматически установлен на клиенте, когдадобавление новых элементов в форму «коллекция» (вместо того, чтобы просто получать пробелы).
Кто-нибудь знает хороший способ сделать это?