Форма: Избегайте установки пустого поля в не отправленное
У меня есть простая модель (упрощенная из источника):
class Collection
{
public $page;
public $limit;
}
И тип формы:
class CollectionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('page', 'integer');
$builder->add('limit', 'integer');
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'FSC\Common\Rest\Form\Model\Collection',
));
}
}
Мой контроллер:
public function getUsersAction(Request $request)
{
$collection = new Collection();
$collection->page = 1;
$collection->limit = 10;
$form = $this->createForm(new CollectionType(), $collection)
$form->bind($request);
print_r($collection);exit;
}
Когда яPOST /users/?form[page]=2&form[limit]=20
ответ - то, что я ожидаю:
Collection Object
(
[page:public] => 2
[limit:public] => 20
)
Теперь, когда яPOST /users/?form[page]=3
ответ:
Collection Object
(
[page:public] => 3
[limit:public] =>
)
limit
становится нулевым, потому что он не был представлен.
Я хотел получить
Collection Object
(
[page:public] => 3
[limit:public] => 10 // The default value, set before the bind
)
Question: Как я могу изменить поведение формы, чтобы оно игнорировало не представленные значения?