在OneToOne中嵌入表单

时间:2015-06-03 03:01:10

标签: php forms symfony

抱歉我的英语不好,我有两个名为USER和DATA的实体

这里是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;
    }


}

将User与Data链接的属性为$ data,将Data with User链接的属性为$ 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表中。感谢和抱歉给您带来不便。

1 个答案:

答案 0 :(得分: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,因为你所需要的几乎就在那里。