Checkboxtype не меняет значение в соответствии со связанным объектом - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть класс Measure с логическим свойством с именем "isShared"

/**
 * @ORM\Entity(repositoryClass="App\Repository\MeasureRepository")
 * @UniqueEntity("name", message = "This value is already used")
 */
class Measure
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(name="is_shared", type="boolean")
     */
    private $isShared;
}

И форма, в которой значение значения свойства isShared должно быть изменено с помощью флажка.

class MeasureType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('isShared', CheckboxType::class, array(
                'required' => false,
                'label' => 'Shared',
                'attr' => array(
                    'data-on-color' => 'primary',
                    'data-off-color' => 'default'
                )
            ));
}

Проблема в том, что отображаемый html всегда

<input type="checkbox" id="measure_isShared" name="measure[isShared]" data-on-color="primary" data-off-color="default" value="1" /> Shared</label>

без учета значения свойства в объекте.Когда я передаю в форму объект Measure со свойством isShared, установленным в false, значение ввода всегда равно 1.

Что я делаю неправильно?Спасибо!

1 Ответ

0 голосов
/ 19 сентября 2018

Если я не ошибаюсь, значение в флажках должно всегда быть 1.

Фактически, если этот флажок не установлен, ваш браузер вообще пропустит отправку свойства mesure[isShared], а ваш FormType сможет просто сделать вывод, что пользователь не проверял поле.Не отправка значения и отправка 0 делает всю разницу

Подумайте о том, чтобы подумать о передаче некоторой произвольной информации (не только двоичной 0 / 1) на сервер.В случае, скажем, choiceexpanded и multiple, конечно), value будет содержать эти значения, но только некоторые из них будут отправлены обратно на сервер.

Подсказка:Вы пытались сбросить объект Measure после отправки формы?

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...