Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 3表单:如何设置textarea小部件的默认值_Php_Symfony_Twig_Symfony 3.1 - Fatal编程技术网

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

Php Symfony 3表单:如何设置textarea小部件的默认值,php,symfony,twig,symfony-3.1,Php,Symfony,Twig,Symfony 3.1,我想在textarea小部件上设置值。 如何在Symfony 3中设置textarea的默认值 对于TextType(input type=“text”)我可以使用value参数,但是对于textarea我不能!!!如何设置textarea的默认值 这是我的表格 public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add(

我想在textarea小部件上设置值。 如何在Symfony 3中设置textarea的默认值 对于TextType(input type=“text”)我可以使用value参数,但是对于textarea我不能!!!如何设置textarea的默认值

这是我的表格

    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'])))
        .
    .

假设您使用的是Symfony 3.4,则有相当多的问题需要解决

长话短说,您应该使用
数据

$builder->add('token', TextareaType::class, array(
    'data' => 'abcdef',
));
正如文件所说:

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


您可以像这样将带有数据的变量传输到控制器中的formType

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

如果在保存新记录和编辑现有记录时使用表单,则可能会发现“数据”选项(Alex的解决方案)受到限制,因为在编辑现有记录时,字段会被默认数据覆盖

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

$form = $this->createForm(MyType::class, $dto);
$form->handleRequest($request);

if($form->isSubmitted()) {
    if($form->isValid()) {
        // Save data
    }
} else {
    // Set default value
    $form->get('date')->setData(
        new\DateTime(’now’)
    );
}

$YourData
中,您应该传输希望在表单中显示的对象。在将对象值传输到表单之前编辑对象值被认为是糟糕的编程。