Me pregunto si es posible crear un formulario usando una entidad para obtener todos los campos, en una relación de uno a uno. Para aclarar:Crear automáticamente un formulario usando entidad (relación uno a uno)
Tengo una entidad User.php
(con todos los campos obvios, nombre, apellido, género, etc.) y una entidad Address.php
. Lo que quiero es construir todo el formulario sin agregar una por una las propiedades de la entidad Address y guardarla con la relación adecuada en la base de datos.
Esto es lo que he tratado (que he Trimed el código un poco), pero obviamente no es la forma correcta:
entidad Usuario:
class User implements UserInterface {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100, nullable=TRUE)
*/
protected $firstName;
/**
* @ORM\Column(type="string", length=200)
* @Assert\NotBlank()
*/
protected $lastNames;
/**
* @ORM\OneToOne(targetEntity="Capsa\Bundle\ClubCommonBundle\Entity\Address")
*/
protected $address;
clase Dirección
class Address {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100, unique=TRUE)
* @Assert\NotBlank()
*/
protected $streetName;
/**
* @ORM\Column(type="string", length=50)
*/
protected $streetNumber;
creador de formularios:
public function buildForm(FormBuilder $builder, array $options) {
$builder->add('login', 'text')
->add('password', 'password')
->add('firstName', 'text', array("required" => FALSE))
->add('lastNames', 'text')
->add('address', 'entity', array(
'class' => 'CapsaClubCommonBundle:Address',
'property'=>'streetName'
));
}
Eso solo obtiene el campo streetName de la tabla y lo pone en una lista.
finalmente utilicé solo esto para cargar todo el objeto: '-> add ('address', new AddressType());' por supuesto, defyining AddressType – Manu
@Manu tu comentario es realmente la respuesta - al menos el que trabajó para mi. Gracias. –
A continuación, el comentario de Manu aquí es la sintaxis más nueva: '' '-> add ('address', AddressType :: class)' '' – 0x1gene