2015-06-06 58 views
0

我的問題是我試圖嵌入形式,我不能這樣做,我讀了symfony書,其他頁面,並且我沒有辦法工作。與關係嵌入形式Symfony2

這裏是我的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'); 
     $builder->add('email'); 
    } 

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

} 

這裏是我的用戶類型:

<?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'; 
    } 
} 

這裏是我的RegistroUsuarioType:

<?php 

namespace Proyecto\LavocBundle\Form; 

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



class RegistroUsuarioType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) { 
     parent::buildForm($builder, $options); 

     $builder->add('usuario'); 
     $builder->add('pass'); 
     $builder->add('datos', new DatosType(), array('by_reference' => true)); 
    } 

    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'Proyecto\LavocBundle\Entity\User' 
     )); 
    } 

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

我的實體DATOS:

<?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; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="email", type="string") 
    */ 

    private $email; 

    /** 
    * @ORM\OneToOne(targetEntity="User", inversedBy="datos") 
    * @ORM\JoinColumn(name="user_id", referencedColumnName="id") 
    */ 

    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 email 
    * 
    * @param integer $email 
    * @return Datos 
    */ 
    public function setEmail($email) 
    { 
     $this->email = $email; 

     return $this; 
    } 

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

    /** 
    * 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; 
    } 


} 

我的實體用戶:

<?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; 
    } 




} 

最後,我crearUsuarioDatosAction:

public function crearUsuarioDatosAction() 
    { 
     $usuario = new User(); 
     $datos = new Datos(); 
     $usuario->setDatos($datos); 
     $request = $this->getRequest(); 
     $form = $this->createForm(new RegistroUsuarioType(), $usuario); 

     return $this->render('AtajoBundle:IngresarValores:crearUsuarioDatos.html.twig', array('form' => $form->createView())); 

    } 

我有幾個問題要問: 1)我得到的錯誤如下:傳遞給選擇字段的實體必須進行管理。也許堅持他們在實體經理?那是什麼錯誤? 2)如何在用戶發送郵件後獲取數據?因爲,例如,用戶和密碼,然後我必須保留在桌子上的用戶和個人數據,如地址,電話號碼,手機號碼等,我必須保持在桌面上DATA

感謝所有!

回答

0

add()函數的第二個參數必須提供表單字段類型,如果要使用默認值,則必須爲null。

$builder->add('datos', null, array('by_reference' => true));