Quiero establecer el valor en un widget de área de texto. Cómo puedo establecer el valor predeterminado para textarea en Symfony 3 para TextType (input type = "text") puedo usar el parámetro value pero para textarea no puedo !!! cómo puedo establecer el valor predeterminado para textarea.

Esta es mi 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'])))
        .
    .
2
pedram shabani 20 ene. 2018 a las 16:20

3 respuestas

La mejor respuesta

Suponiendo que está utilizando Symfony 3.4, hay bastante buena documentación para eso.

Para resumir, debes usar data:

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

Como dicen los documentos:

La opción de datos siempre anula el valor tomado de los datos de dominio (objeto) cuando se procesa. Esto significa que el valor del objeto también se anula cuando el formulario edita un objeto ya persistente, lo que hace que pierda su valor persistente cuando se envía el formulario.

3
Alex Karshin 20 ene. 2018 a las 13:26

Puede transferir la variable con datos al formType en el controlador de esa manera

$form = $this->createForm(Form::class,$YourData);
0
Kuba Zabielski 20 ene. 2018 a las 13:28

Si está utilizando el formulario para guardar un nuevo registro y editar uno existente, es probable que haya encontrado que la opción 'datos' (solución de Alex) es limitada, porque los campos se anulan con los datos predeterminados durante la edición Un registro existente.

Una de las soluciones es establecer los datos predeterminados manualmente en la acción new () en su controlador, pero solo en la llamada GET, no 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’)
    );
}
1
paul.ago 21 ago. 2018 a las 14:12