Значения по умолчанию для ящика выбора symfony2

Мой проект написан с использованием компонентов Silex и Symfony (т.е. компонента Form).

Я пытаюсь создать батарею переключателей, построенных из класса, и я хочу предварительно выбрать один из этих радиостанций.

Я создаю такую ​​форму:

$form = $app['form.factory']->createBuilder(new QueryFormType(), $query) 

где QueryFormType – мой пользовательский тип (он расширяет AbstractType), где я определяю поля формы, а $query – сущность со значениями по умолчанию для формы.

Поля формы в QueryFormType выглядят так (для ясности я пропустил построитель и другие поля):

 ->add('contractPeriod', 'filter', array( 'label' => 'Contract Period:', 'choices' => array( '-1' => 'No period', '1' => '1 month', '2' => '2 months', '3' => '3 months', '6' => '6 months', '12' => '12 months', '18' => '18 months' ), 'expanded' => TRUE, 'multiple' => FALSE )) 

$query – это экземпляр класса, который должен предварительно выбрать переключатель. В его конструкторе вы найдете:

 $this->contractPeriod = '3'; 

У этого есть правильные геттеры и сеттеры для этого свойства тоже.

Теперь. Форма и переключатели отображаются правильно. Радиоприемник предварительно выбран на '3' => '3 months' . Когда я проверяю радио выше в списке определений (так что 2, 1 или -1), форма принимает его как значение. Но когда я проверяю значение ниже в определенном списке (6, 12 или 18), он использует значение по умолчанию, заданное в $query . Какого черта?

Мой вопрос в том, как правильно установить значение по умолчанию, чтобы я мог выбрать любое другое значение, которое я хочу после визуализации формы?

Я уже пробовал использовать свойство data в определении поля формы, и это та же история. Я могу выбрать только более низкие значения, но не выше. Я устал использовать «preferred_choices», но он не работает так, как я ожидал (испорченные идентификаторы входов).

Прошу вас о помощи.

РЕДАКТИРОВАТЬ

Вот как я представляю форму:

 $form->submit($request->query->get($form->getName()), FALSE); 

Я узнал, что если я установлю clearMissing на TRUE (второй аргумент), он работает хорошо, но я не могу выполнять частичное предварительное заполнение (или исправление формы). Кажется, это ошибка.

РЕДАКТИРОВАТЬ

Это как-то связано с этими строками внутри класса Form компонентов symfony:

 if ($isSubmitted || $clearMissing) { $child->submit($isSubmitted ? $submittedData[$name] : null, $clearMissing); unset($submittedData[$name]); if (null !== $this->clickedButton) { continue; } if ($child instanceof ClickableInterface && $child->isClicked()) { $this->clickedButton = $child; continue; } if (method_exists($child, 'getClickedButton') && null !== $child->getClickedButton()) { $this->clickedButton = $child->getClickedButton(); } } с if ($isSubmitted || $clearMissing) { $child->submit($isSubmitted ? $submittedData[$name] : null, $clearMissing); unset($submittedData[$name]); if (null !== $this->clickedButton) { continue; } if ($child instanceof ClickableInterface && $child->isClicked()) { $this->clickedButton = $child; continue; } if (method_exists($child, 'getClickedButton') && null !== $child->getClickedButton()) { $this->clickedButton = $child->getClickedButton(); } } 

$ child-> submit update viewData своего родителя (форма в этом случае) для отправленного значения, только если оно меньше / равно значению по умолчанию, заданному в форме. Зачем?

РЕДАКТИРОВАТЬ

Я думаю, что компонент Form не отправит детей после значения по умолчанию, которое в этом случае isSubmited == false и clearMissing == false. Это делает доступными только значения до значения по умолчанию. Но я не знаю.

Solutions Collecting From Web of "Значения по умолчанию для ящика выбора symfony2"