Задать поле данных без отображения не работает - PullRequest
0 голосов
/ 12 мая 2018

Прежде всего, в отношении возможного дублирования, я должен сказать, что это не одно и то же, потому что он пытается получить к нему доступ, а я пытаюсь присвоить значение.И я видел это раньше, и это мне не помогло.

Я пытаюсь установить данные поля сущностей перед тем, как показать форму, и я пробовал несколько режимов, и ни один из них не помог мне и ядействительно не понимаю этого.Я работаю над Symfony 4

Это поле формы с опцией "mapped" => false

->add('roleGroup', EntityType::class, array(
             'label' => "Grupo que recibira los correos de validación como Administración",
             'required' => false,
             "mapped" => false,
             'placeholder' => 'Elige el Grupo',
             'class'    => RoleGroup::class,
             'label_attr' => array(
                'class' => 'control-label'
                ),
             'attr' => array(
                    'class' => 'form-control select',
                )
        ))

Затем в контроллере я пытаюсь присвоить значение, но безуспешно:

$form["roleGroup"]->setData(21);

Я также пытался:

$form->get("roleGroup")->setData(21);

return $this->render('configuration/index.html.twig', 
    [
        'id'      => $id,    
        'title'   => "General",
        'partial' => "general.html.twig",
        'form'    => $form->createView(),
    ]);

Может кто-нибудь сказать мне, что происходит?

Спасибо!

1 Ответ

0 голосов
/ 12 мая 2018

Поскольку ваше поле формы имеет тип EntityType::class, ожидаемые данные должны быть объектом типа RoleGroup::class, пока вы пытаетесь передать целочисленное значение.

Поэтому вам нужно выбрать вашу сущность ипередать его как данные поля.Предположим, что 21 является id вашей сущности, в вашем контроллере должно быть что-то вроде этого

$em = $this->get('doctrine.orm.entity_manager');
$entity = $em->getRepository(RoleGroup::class)->findOneBy(['id' => 21]);
$form->get('roleGroup')->setData($entity);

В качестве альтернативы вы также можете установить data непосредственно в поле формы в качестве значения по умолчанию

->add('roleGroup', EntityType::class, array(
         ...
         'data' => $entity
     ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...