SonataAdmin создать сущность с логическим полем - PullRequest
0 голосов
/ 19 октября 2019

У меня есть эта сущность, если я создаю такую ​​запись.

$synopsis = new Synopsis();
$synopsis->setPartOne("a");
$synopsis->setPartTwo("b");
$synopsis->setTitle("A");
$synopsis->setSubtitle("B");
$synopsis->setEnabled(false);

$em->persist($synopsis);
$em->flush();

И затем я иду к своему администратору, я вижу поле «Нет», которое ожидается.

Но теперь, если я использую поле новой формы sonata admin, даже если я выберу включен «no», запись будет создана с enabled = true. И я действительно не понимаю, почему это так.

Вот то, что у меня есть в моем SynopsisAdmin

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper->add('title', TextType::class);
    $formMapper->add('subtitle', TextType::class);
    $formMapper->add('partOne', TextAreaType::class);
    $formMapper->add('partTwo', TextAreaType::class);
    $formMapper->add('enabled', BooleanType::class);
}

Это то, как включенное поле определяется в сущности

/**
 * @ORM\Column(type="boolean")
 */
private $enabled;

Спасибо за вашу помощь.

РЕДАКТИРОВАТЬ: Забавные факты, даже если я не вижу в списке просмотра сонаты, когда я иду к виду формы, я вижу вместо этого да.

Я подозреваю ошибку в функциональности ядра сонаты.

1 Ответ

1 голос
/ 19 октября 2019

Я думаю, вы должны использовать CheckboxType вместо BooleanType для полей формы.

Похоже на BooleanType для списка, шоу и действий сетки. https://symfony.com/doc/master/bundles/SonataAdminBundle/reference/field_types.html

Обновление

Чтобы использовать тип BooleanType, необходимо установить для параметра 'transform' значение true. Это преобразует ваше логическое значение в параметры ДА / НЕТ в BooleanType:

$formMapper
    ->add('enabled', BooleanType::class, [
           'transform' => true
    ])
...