用我从表中提取的数据填充表单 - Symfony2

时间:2015-06-05 15:30:00

标签: forms symfony entity dql

我的问题是:我有一个包含用户数据的实体,例如:

  • 年龄
  • 名称
  • 地址
  • 电话
  • ...

我的目标是创建一个表单,其中使用查询可以带来所有这些数据并用数据填充我的表单,以便用户可以修改它,例如,如果您更改单元格,或更改他的房子的方向

公司和我已经制作了实体和表格,咨询表格就可以了。我的问题是如何使用从表中获取的数据填充表单字段。

我的实体(DatosEntity):

    <?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")
*/

private $personales;

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

private $email;

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


}

我的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';
    }

}

关于控制器的咨询,但不知道该怎么做。现在,不要喜欢获取我收到的数据并将其转储到表单中。

非常感谢,并为此事感到抱歉

2 个答案:

答案 0 :(得分:0)

我认为您可以通过以下步骤完成您想要做的事情:

  1. 首先在我们将调用$user
  2. 的变量中收集您的用户数据
  3. 然后,通过您的表单给这个$user补充水分,如下所示:

    $form = $this->createForm(new UserType(), $user);

  4. 像平常一样对待你的表格。实体中找到的值应自动填写在表单中。

  5. 希望这有帮助。

答案 1 :(得分:0)

你的行动可能是这样的:

public function editAction($id)
{
    $em = $this->getDoctrine()->getManager();

    $entity = $em->getRepository('LavocBundle:User')->find($id);

    if (!$entity) {
        throw $this->createNotFoundException('Unable to find User entity.');
    }

    $editForm = $this->createForm(new UserType(), $entity);

    return array(
        'entity'      => $entity,
        'edit_form'   => $editForm->createView(),
    );
}