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

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

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

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

$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 в определении поля формы, и это та же история. Я могу выбрать только более низкие значения, но не более. Я устал использовать ‘предпочитаемую_оплату’, но она не работает так, как я ожидал (испортил идентификаторы входов).

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

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

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

$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();
}
}

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

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

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

2

Решение

Задача ещё не решена.

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

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

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