pedram shabani
pedram shabani

Reputation: 1680

Symfony 3 forms: how to set default value for a textarea widget

I want to set the value on a textarea widget. How i can set default value for textarea in Symfony 3 for TextType(input type="text") i can use value parameter but for textarea i can not!!!how i can set default value for textarea.

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

Upvotes: 6

Views: 10869

Answers (3)

paul.ago
paul.ago

Reputation: 4103

If you’re using the form for both saving a new record and editing an existing one, chances are that you’ve found the ‘data’ option (Alex’s solution) to be limited, because the fields are overridden with the default data while editing an existing record.

One of the solutions is to set the default data manually in the new() action in your controller, but only on the GET call, not 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’)
    );
}

Upvotes: 1

Kuba Zabielski
Kuba Zabielski

Reputation: 156

You can transfer the variable with data to the formType in controller like that

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

Upvotes: 2

Kevin Kopf
Kevin Kopf

Reputation: 14195

Assuming you are using Symfony 3.4, there's quite a good documentation for that.

Long story short, you should use data:

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

As the docs say:

The data option always overrides the value taken from the domain data (object) when rendering. This means the object value is also overriden when the form edits an already persisted object, causing it to lose its persisted value when the form is submitted.

Upvotes: 12

Related Questions