0

我正在基于基于 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()
        ;
    }

...虽然我希望在我的表单中默认看到对“德国”对象的引用,但我看到的是一个空字段。我应该传入一个对象而不是一个字符串吗?我想要做的甚至可能吗?我在这里做错了什么?

4

2 回答 2

1

我认为您错过了有关以下文档的关键部分empty_data

此选项确定当提交的值为空(或缺失)时,该字段将返回什么值。如果在视图中呈现表单时未提供任何初始值,则它不会设置初始值。

这意味着它可以帮助您处理带有空白字段的表单提交。

这意味着empty_data当表单提交时没有默认值时,将使用数据填充您的模型。

我不熟悉$formMapper您的代码片段中使用的,但是在典型的 Symfony-Controller 中,您可以像这样创建表单:

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

在这种情况下,$initialData包含一个Distribution值为的属性Germany。或者,您可以尝试在前端提供值。

于 2018-05-03T12:13:52.237 回答
0

要设置默认数据,请使用选项“数据”。样本:

 //Use block
 use Symfony\Component\Form\Extension\Core\Type\TextType;
 //...
 $formMapper
     ->add('module', TextType::class,[
         'data' => 'Gearmany',
     ]);
于 2018-05-03T12:40:25.243 回答