Reputation: 1680
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
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
Reputation: 156
You can transfer the variable with data to the formType in controller like that
$form = $this->createForm(Form::class,$YourData);
Upvotes: 2
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