Symfony 3表单:如何为textarea小部件设置默认值

时间:2018-01-20 13:20:06

标签: php symfony twig symfony-3.1

我想在textarea小部件上设置值。 我如何在 Symfony 3 中为textarea设置默认值 对于TextType(输入类型=“文本”)我可以使用值参数,但对于textarea,我不能!!!我如何设置textarea的默认值。

这是我的buildForm

    public function buildForm(FormBuilderInterface $builder, array $options)
    { 
        $builder
        ->add('linkdin', TextType::class, array('attr' => array('placeholder' => 
'linkdin','class' => 'form-control width100','value' => 
MainPageType::$content1[0]['linkdin'])))

        ->add('addres', CKEditorType::class, array('attr' => array('required' =>
 'false','name'=>'editor1' ,'id' => 'editor1','class' => 'ckeditor','empty_data'
 => MainPageType::$content1[0]['addres'])))
        .
    .

3 个答案:

答案 0 :(得分:3)

假设您使用的是Symfony 3.4,那就非常good documentation

长话短说,您应该使用data

$builder->add('token', TextareaType::class, array(
    'data' => 'abcdef',
));

正如文档所说:

  

数据选项始终覆盖渲染时从域数据(对象)获取的值。这意味着当表单编辑已经存在的对象时,对象值也会被覆盖,导致它在提交表单时丢失其持久值。

答案 1 :(得分:1)

如果您同时使用该表单保存新记录和编辑现有记录,则可能会发现'data'选项(Alex的解决方案)受到限制,因为这些字段已被默认值覆盖数据,同时编辑现有记录。

一种解决方案是在控制器的new()操作中手动设置默认数据,但只能在GET调用上,而不是在POST上设置。

{
   //2018 year
    "2018": {
   //9 month
        "9": {
   //21 date
            "21": {
   //19 hr
                "19": {
   //15 min
                    "15": [
                        97,
                        83,
                        50,
                        63,
                        54,
                        58,
                        6,
                        84,
                        61,
                        65
                    ],
                    "16": [
                        21,
                        8,
                        35,
                        13,
                        23,                            
                        63,
                        54,
                        58,
                        6,
                        17
                    ],

                },

            },

        },

    },
    "_id": ObjectID("5b7c177fbcce8c40216fc74d"),
    "Device_Id": 103
}

答案 2 :(得分:0)

您可以将带有数据的变量传输到控制器中的formType,如

$form = $this->createForm(Form::class,$YourData);