Hola Sf devs ¡
Tengo un formulario basado en una entity y en el formulario tengo un campo no mapeado, que es una ColectionType::class de un DTO.
Con la accion de Crear del formulario no hay problema y esta solucionado, el problema viene en la accion de Editar y concretamente a la hora de mostrar esa coleccion no mapeada.
Os pongo un poco de codigo para que veais un poco por donde va.
//OrganizationType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->//OTROS CAMPOS DE LA ENTITY
->add('enrolUserToOrg', CollectionType::class, array(
'label' => false,
'entry_type' => new EnrolUserToOrgType($this->selectedRoleUser),
'mapped' => false,
'allow_add' => true,
'delete_empty' => true,
'attr' => array(
'class' => 'enrolUserOrgWrapper'
)
));}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'efor\AppBundle\Entity\Organization',
));
}
//EnrolUserToOrgTypepublic function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('user', EntityType::class, array(
'label' => false,
'class' => 'UsuarioBundle:User',
'empty_value' => 'Selecciona el/los responsable/s',
'query_builder' => function (EntityRepository $er) {
// return $er->findAllUsersExceptSuperUserAndSuperAdmin();
return $er->createQueryBuilder('users');
},
'attr' => array(
'class' => 'col-md-5 select-user'
)
))
->add('role', ChoiceType::class, array(
'label' => false,
'empty_value' => 'Seleccionar un Rol',
'choices' => $this->roleChoices,
'attr' => array(
'class' => 'col-md-5 select-role'
)
))
->add('Quitar', ButtonType::class, array(
'attr' => array(
'class' => 'col-md-2 btn-danger button-remove-enrol'
)
))
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'efor\AppBundle\Model\EnrolUserToOrg'
));
}
//DTO -> EnrolUserToOrg
<?php
namespace efor\AppBundle\Model;
use efor\AppBundle\Entity\Role;
use efor\UsuarioBundle\Entity\User;
class EnrolUserToOrg
{
/** @var User $user */
private $user;
/** @var Role $role */
private $role;
/**
* @return User
*/
public function getUser()
{
return $this->user;
}
/**
* @param User $user
*/
public function setUser($user)
{
$this->user = $user;
}
/**
* @return Role
*/
public function getRole()
{
return $this->role;
}
/**
* @param Role $role
*/
public function setRole($role)
{
$this->role = $role;
}
}
Hasta aqui en el formulario de crear una nueva organizacion funciona perfecto, y en el Action del controlador recojo ese campo NO mapeado como un array[EnrolUserToOrg] y creo los objetos y relaciones que necesito.
Mi problema viene ahora al editar el formulario, y es que no se de que forma pasarle el array de elementos del tipo EnrolUserToOrg ( que he obtenido previamente, claro) para que lo añada al campo Collection y pueda mostrarlo en la vista.
Es decir, hidratar ese campo para que en la vista me llegue esa coleccion rellena.
A alguien se le ocurre alguna idea al respecto ?
Gracias y saludos ¡¡