2015-06-03 2 views
0

извините за мой бедный инглиш, у меня есть две сущностей, называемых US и DATAВстраивание формы в отношении OneToOne

Здесь код объекта USER:

<?php 

    namespace Proyecto\LavocBundle\Entity; 

    use Doctrine\Common\Collections\ArrayCollection; 
    use Doctrine\ORM\Mapping as ORM; 

    /** 
    * User 
    * 
    * @ORM\Table() 
    * @ORM\Entity(repositoryClass="Proyecto\LavocBundle\Entity\UserRepository") 
    */ 

class User { 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="usuario", type="string", length=30) 
    */ 
    private $usuario; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="pass", type="string", length=20) 
    */ 
    private $pass; 

    /** 
    * @ORM\OneToMany(targetEntity="Pedido", mappedBy="user") 
    */ 
    private $pedidos; 

    /** 
    * @ORM\OneToOne(targetEntity="Datos", mappedBy="personales") 
    */ 

    private $datos; 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() { 
     return $this->id; 
    } 

    /** 
    * Set usuario 
    * 
    * @param string $usuario 
    * @return User 
    */ 
    public function setUsuario($usuario) { 
     $this->usuario = $usuario; 

     return $this; 
    } 

    /** 
    * Get usuario 
    * 
    * @return string 
    */ 
    public function getUsuario() { 
     return $this->usuario; 
    } 

    /** 
    * Set pass 
    * 
    * @param string $pass 
    * @return User 
    */ 
    public function setPass($pass) { 
     $this->pass = $pass; 

     return $this; 
    } 

    /** 
    * Get pass 
    * 
    * @return string 
    */ 
    public function getPass() { 
     return $this->pass; 
    } 

    public function __construct() { 
     $this->pedidos = new ArrayCollection(); 
    } 

    /** 
    * Set pedidos 
    * 
    * @param string $pedidos 
    * @return User 
    */ 
    public function setPedido($pedidos) { 
     $this->pedidos = $pedidos; 
     return $this; 
    } 

    /** 
    * Get pedidos 
    * 
    * @return string 
    */ 
    public function getPedidos() { 
     return $this->pedidos; 
    } 

    /** 
    * Add pedidos 
    * 
    * @param \UTN\GuardaBundle\Entity\Pedido $pedidos 
    * @return User 
    */ 
    public function addPedido(\Proyecto\LavocBundle\Entity\Pedido $pedidos) { 
     $this->pedidos[] = $pedidos; 
     return $this; 
    } 

    /** 
    * Remove pedidos 
    * 
    * @param \UTN\GuardaBundle\Entity\Pedido $pedidos 
    */ 
    public function removePedido(\Proyecto\LavocBundle\Entity\Pedido $pedidos) { 
     $this->pedidos->removeElement($pedidos); 
    } 

    /** 
    * Get datos 
    * 
    * @return string 
    */ 

    public function getDatos() 
    { 
     return $this->datos; 
    } 

    /** 
    * Set datos 
    * 
    * @param string $datos 
    * @return User 
    */ 

    public function setDatos($datos) 
    { 
     $this->datos = $datos; 
     return $this; 
    } 




} 

Здесь код объекта DATA:

<?php 

namespace Proyecto\LavocBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Datos 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="Proyecto\LavocBundle\Entity\DatosRepository") 
*/ 
class Datos 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="empresa", type="string", length=50) 
    */ 
    private $empresa; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="cuit", type="integer") 
    */ 
    private $cuit; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="localidad", type="string", length=50) 
    */ 

    private $localidad; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="calle", type="string", length=40) 
    */ 
    private $calle; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="altura", type="integer") 
    */ 
    private $altura; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="areaTel", type="integer") 
    */ 
    private $areaTel; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="telefono", type="integer") 
    */ 
    private $telefono; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="areaCel", type="integer") 
    */ 
    private $areaCel; 

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="celular", type="integer") 
    */ 
    private $celular; 

    /** 
    * @ORM\OneToOne(targetEntity="User", inversedBy="datos") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    * @Assert\Type(type="Proyecto\LavocBundle\Entity\User") 
    */ 

    private $personales; 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set empresa 
    * 
    * @param string $empresa 
    * @return Datos 
    */ 
    public function setEmpresa($empresa) 
    { 
     $this->empresa = $empresa; 

     return $this; 
    } 

    /** 
    * Get empresa 
    * 
    * @return string 
    */ 
    public function getEmpresa() 
    { 
     return $this->empresa; 
    } 

    /** 
    * Set cuit 
    * 
    * @param integer $cuit 
    * @return Datos 
    */ 
    public function setCuit($cuit) 
    { 
     $this->cuit = $cuit; 

     return $this; 
    } 

    /** 
    * Get cuit 
    * 
    * @return integer 
    */ 
    public function getCuit() 
    { 
     return $this->cuit; 
    } 

    /** 
    * Set localidad 
    * 
    * @param string $localidad 
    * @return Datos 
    */ 
    public function setLocalidad($localidad) 
    { 
     $this->localidad = $localidad; 

     return $this; 
    } 

    /** 
    * Get localidad 
    * 
    * @return string 
    */ 
    public function getLocalidad() 
    { 
     return $this->localidad; 
    } 

    /** 
    * Set calle 
    * 
    * @param string $calle 
    * @return Datos 
    */ 
    public function setCalle($calle) 
    { 
     $this->calle = $calle; 

     return $this; 
    } 

    /** 
    * Get calle 
    * 
    * @return string 
    */ 
    public function getCalle() 
    { 
     return $this->calle; 
    } 

    /** 
    * Set altura 
    * 
    * @param integer $altura 
    * @return Datos 
    */ 
    public function setAltura($altura) 
    { 
     $this->altura = $altura; 

     return $this; 
    } 

    /** 
    * Get altura 
    * 
    * @return integer 
    */ 
    public function getAltura() 
    { 
     return $this->altura; 
    } 

    /** 
    * Set telefono 
    * 
    * @param integer $telefono 
    * @return Datos 
    */ 
    public function setTelefono($telefono) 
    { 
     $this->telefono = $telefono; 

     return $this; 
    } 

    /** 
    * Get telefono 
    * 
    * @return integer 
    */ 
    public function getTelefono() 
    { 
     return $this->telefono; 
    } 

    /** 
    * Set area 
    * 
    * @param integer $area 
    * @return Datos 
    */ 
    public function setAreaTel($areaTel) 
    { 
     $this->areaTel = $areaTel; 

     return $this; 
    } 

    /** 
    * Get area 
    * 
    * @return integer 
    */ 
    public function getAreaTel() 
    { 
     return $this->areaTel; 
    } 

    /** 
    * Set celular 
    * 
    * @param integer $celular 
    * @return Datos 
    */ 
    public function setCelular($celular) 
    { 
     $this->celular = $celular; 

     return $this; 
    } 

    /** 
    * Get celular 
    * 
    * @return integer 
    */ 
    public function getCelular() 
    { 
     return $this->celular; 
    } 

    /** 
    * Set areaCel 
    * 
    * @param integer $areaCel 
    * @return Datos 
    */ 
    public function setAreaCel($areaCel) 
    { 
     $this->areaCel = $areaCel; 

     return $this; 
    } 

    /** 
    * Get areaCel 
    * 
    * @return integer 
    */ 
    public function getAreaCel() 
    { 
     return $this->areaCel; 
    } 

    /** 
    * Set personales 
    * 
    * @param string $personales 
    * @return Datos 
    */ 

    public function setPersonales($personales) 
    { 
     $this->personales = $personales; 
     return $this; 

    } 

    /** 
    * Get personales 
    * 
    * @return string 
    */ 

    public function getPersonales() 
    { 
     return $this->personales; 
    } 


} 

Свойство, которое связывает пользователя с данными, - это $ data, а свойство, которое связывает данные с пользователем, - $ personales.

У меня есть UserType и DatosType:

Здесь код UserType:

<?php 

namespace Proyecto\LavocBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class UserType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('usuario'); 
     $builder->add('pass'); 
    } 

    public function getName() 
    { 
     return 'user_form'; 
    } 
} 

и здесь DatosType:

<?php 

namespace Proyecto\LavocBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class DatosType extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder->add('empresa'); 
     $builder->add('cuit'); 
     $builder->add('localidad'); 
     $builder->add('calle'); 
     $builder->add('altura'); 
     $builder->add('areaTel'); 
     $builder->add('telefono'); 
     $builder->add('areaCel'); 
     $builder->add('celular'); 
    } 

    public function getName() 
    { 
    return 'datos_form'; 
    } 

} 

Я должен сделать форму, где они две формы. Я хотел бы знать, как код для встраивания и как актуарий контроллер должен сгенерировать форму и отправить ее в шаблон, чтобы получать данные и хранить пользовательские данные в таблице USER и сохранять данные DATA в таблице DATA. Спасибо и извините за неудобства.

ответ

0

В вашем UserType вы можете вставлять свои DatosType так:

->add('datos', new DatosType()) 

Однако в DatosType вы должны иметь data_class набор вроде так:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'Proyecto\LavocBundle\Entity\Datos', 
    )); 
} 

Вы должны иметь хорошее чтение в forms documentation как там почти все, что вам нужно.

+0

Отлично, извините, мой бедный inglish. Я понимаю, но как я создаю форму в контроллере? – Geronimo

+0

Как я уже сказал выше, все, что вам нужно, это здесь: http://symfony.com/doc/current/book/forms.html - первые два пункта касаются создания формы в контроллере. – Richard

Смежные вопросы