Встраивать формы с отношениями Symfony2

моя проблема в том, что я пытаюсь встроить формы, и я не могу этого сделать, и я читаю книгу Symfony, другие страницы, и у меня нет возможности работать.

Вот мой 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';
}

}

Вот мой 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';
}
}

Вот мой 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;
}


}

Мой Entity 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;
}




}

И, наконец, мое творениеUsuarioDatosAction:

  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) Как получить данные после того, как пользователь отправит по почте? потому что, например, имя пользователя и пароль, то я должен держать на столе пользователя USER и личные данные, такие как адрес, номер телефона, номер мобильного телефона и т. д., я должен держать на столе данные

Спасибо всем !!!

0

Решение

Второй параметр функции add () должен давать тип поля формы или нуль, если вы хотите использовать значение по умолчанию.

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]