Получение empty_data для работы в приложении Symfony 2 - PullRequest
0 голосов
/ 03 мая 2018

Я добавляю поля в проект на основе проекта, основанного на Symfony 2 и Sonata. Я пытаюсь следовать инструкциям этого ответа . В одном из моих административных классов я вставил следующий код:

   $default = 'Germany';
   if (!$this->getUser()->hasRole(User::CONTENT_SUPPLIER)) {
        $formMapper
            ->tab('Distribution')
                ->with('Distribution')
                    ->add(
                        'module',
                        null,
                        [
                            'empty_data' => $default,
                        ]
                    )
                    ->add(
                        'distributions',
                        'distribution_list',
                        [
                            'label'    => false,
                            'required' => 'false',
                            'disabled' => true
                        ]
                    )
                    ->add('plannedDistributions')
                ->end()
            ->end()
        ;
    }

... и хотя я ожидаю увидеть ссылку на объект "Германия" по умолчанию в своей форме, я вместо этого вижу пустое поле. Должен ли я передавать объект, а не строку? Возможно ли то, что я пытаюсь сделать? Что я здесь делаю неправильно?

Ответы [ 2 ]

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

Чтобы установить данные по умолчанию, используйте опцию «данные». Пример:

 //Use block
 use Symfony\Component\Form\Extension\Core\Type\TextType;
 //...
 $formMapper
     ->add('module', TextType::class,[
         'data' => 'Gearmany',
     ]);
0 голосов
/ 03 мая 2018

Я думаю, вы упустили важный момент в документации, касающейся empty_data:

Этот параметр определяет, какое значение будет возвращено в поле, если отправленное значение будет пустым (или отсутствует). Не устанавливается начальное значение, если оно не указано при визуализации формы в представлении.

Это означает, что он помогает вам обрабатывать отправку формы с пустыми полями.

Это означает, что empty_data заполнит вашу модель данными, когда форма была отправлена ​​без значения по умолчанию.

Я не знаком с $formMapper, используемым в вашем фрагменте, но в типичном контроллере Symfony вы можете создать свою форму следующим образом:

$form = $this->createForm(MyForm::class, $initialData);

В этом случае $initialData содержит свойство Distribution со значением Germany. В качестве альтернативы вы можете попробовать указать значение в своем интерфейсе.

...