恢复价值选择输入相关实体理论symfony 2 [英] Recover values select imput related entities doctrine symfony 2

查看:121
本文介绍了恢复价值选择输入相关实体理论symfony 2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试根据Symfony 2的相关实体创建一个表单。我有不同的实体:Tematica,Personal,Hilo,Consultante,Consulta,Consulta_Asignatura和Asignatura。我保持所有的数据,但与Hilo个人和Tematica的实体有一些问题。
在我的表单中需要显示选择的输入,它应该有所有的Enunciado行,然后在此选择输入中恢复所选项的电子邮件。
我将分享我的代码,希望有人可以帮助我。

  class HiloType extends AbstractType 
{
/ **
* @param FormBuilderInterface $ builder
* @param array $ options
* /
public function buildForm(FormBuilderInterface $ builder,array $ options)
{
$ builder
- > add('consultanteemail',new ConsultanteType(),array('label'=> false))
- > add('个人邮箱','entity',array(
'label'=>'Personal de Soporte',
'class'=>'GuiasDocentes\AppBundle\Entity\Personal',
'property'=>'Email',
'by_reference'=>'false',
'query_builder'=> function(PersonalRepository $ pr){
$ query = $ pr-> createQueryBuilder('u')
;
return $ query;
},
'empty_value'=> '$'$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ ;
}





  *个人
*
* @ ORM\Table(name =personal)
* @ ORM\Entity(repositoryClass =GuiasDocentes\AppBundle\Entity\PersonalRepository )

class个人
{
/ **
* @var string
*
* @ ORM\Column(name =电子邮件,type =string,length = 50,nullable = false)
* @ ORM\Id
* @ ORM\GeneratedValue(strategy =IDENTITY)
*
私人电子邮件;

/ **
* @var string
*
* @ ORM\Column(name =nombre,type =string,length = 30 ,nullable = true)
* /
private $ nombre;

/ **
* @var string
*
* @ ORM\Column(name =apellidos,type =string,length = 50 ,nullable = true)
* /
private $ apellidos;

/ **
* @var string
*
* @ ORM\Column(name =departamento,type =string,length = 20 ,nullable = true)
* /
private $ departamento;

/ *自定义代码* /
/ **
* @ ORM\OneToMany(targetEntity =GuiasDocentes\AppBundle\Entity\TematicaSoporte,mappedBy = personalEmail)
* @ Assert\Valid()
* /
private $ tematicasSoporte;

public function __constructor(){
$ this-> tematicasSoporte = new ArrayCollection();
$ this-> hilos = new ArrayCollection();
}

public function addTematicasSoporte(\GuiasDocentes\AppBundle\Entity\TematicaSoporte $ tematicaSoporte){
$ this-> tematicasSoporte [] = $ tematicaSoporte;
return $ this;
}

public function setTematicasSoporte(\GuiasDocentes\AppBundle\Entity\TematicaSoporte $ tematicaSoporte){
$ this-> tematicasSoporte [] = $ tematicaSoporte;
return $ this;
}

public function getTematicasSoporte(){
return $ this-> tematicasSoporte;
}

/ **
* @ ORM\OneToMany(targetEntity =GuiasDocentes\AppBundle\Entity\Hilo,mappedBy =personalemail)
* @ Assert\Valid()
* /
private $ hilos;

public function setHilos(Hilo $ hilo){
$ this-> hilos [] = $ hilo;
return $ this;
}

public function addHilos(Hilo $ hilo){
$ this-> hilos [] = $ hilo;
return $ this;
}

public function getHilos(){
return $ this-> hilos;
}





  / ** 
* TematicaSoporte
*
* @ ORM\Table(name =tematica_soporte,indexes = {@ ORM\Index(name =fk_tematica_soporte_personal1_idx,columns = personal_email})})
* @ ORM\Entity(repositoryClass =GuiasDocentes\AppBundle\Entity\TematicaSoporteRepository)
* /
class TematicaSoporte
{
/ **
* @var整数
*
* @ ORM\Column(name =id,type =integer,nullable = false)
* @ ORM\Id
* @ ORM\GeneratedValue(strategy =IDENTITY)
* /
private $ id;

/ **
* @var string
*
* @ ORM\Column(name =enunciado,type =text,nullable = true )
* /
private $ enunciado;

/ **
* @var整数
*
* @ ORM\Column(name =orden,type =integer,nullable = false )
* /
private $ orden;

/ **
* @var \Personal
*
* @ ORM\ManyToOne(targetEntity =个人,inversedBy =tematicasSoporte,级联= {ALL})
* @ ORM\JoinColumns({
* @ ORM\JoinColumn(name =personal_email,referencedColumnName =email)
*})
* /
private $ personalEmail;





  / ** 
* Hilo
*
* @ ORM\Table(name =hilo,indexes = {@ ORM\Index(name =fk_Hilo_Personal1_idx,columns = {personalEmail}) ,@ ORM\Index(name =fk_Hilo_Consultante1_idx,columns = {consultanteEmail})})
* @ ORM\Entity
* /
class Hilo
{
/ **
* @var整数
*
* @ ORM\Column(name =id,type =integer,nullable = false)
* @ ORM\Id
* @ ORM\GeneratedValue(strategy =IDENTITY)
* /
private $ id;

/ **
* @var \GuiasDocentes\AppBundle\Entity\Personal
*
* @ ORM\ManyToOne(targetEntity =个人,inversedBy =hilos,cascade = {ALL})
* @ ORM\JoinColumns({
* @ ORM\JoinColumn(name =personalEmail,referencedColumnName =email )
*})
* /
private $ personalemail;

/ **
* @var \GuiasDocentes\AppBundle\Entity\Consultante
*
* @ ORM\ManyToOne(targetEntity =consultante ,inversedBy =hilos,cascade = {ALL})
* @ ORM\JoinColumns({
* @ ORM\JoinColumn(name =consultanteEmail,referencedColumnName =email )
*})
* /
private $ consultanteemail;


/ *自定义代码* /

/ **
* @ ORM\OneToMany(targetEntity =GuiasDocentes\AppBundle\Entity \Consulta,mappedBy =hiloid)
* @ Assert\Valid()
* /
private $ consultas;

public function __construct(){

$ this-> consultas = new ArrayCollection();
}

public function setConsultas(Consulta $ consulta){
$ this-> hilos [] = $ consulta;
}

public function addConsulta(\GuiasDocentes\AppBundle\Entity\Consulta $ consulta){
$ this-> hilos [] = $ consulta;
}


/ *结束自定义代码* /

以与此过程相同的方式,我可以看到使用Personal class y的电子邮件生成的select字段需要显示Tematica_soporte类的Enunciado。
Thax

解决方案

在TematicaSoporte中添加一个方法就足够了:

  public function getEnunciado(){return $ this-> getTematicasSoporte()[0]  - > getEnunciado(); } 


I'm trying to create a form based on my related entities in doctrine by Symfony 2. I have different entities: Tematica, Personal, Hilo, Consultante, Consulta, Consulta_Asignatura and Asignatura. I reach to persist all my data, nevertheless have some problems with entities Hilo Personal and Tematica. In my form need to show select imput, it should have all "Enunciado" rows and later recover Email of selected option in this select input. I'll share my code, I hope somebody can help my.

class HiloType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('consultanteemail', new ConsultanteType(), array ('label' => false))
            ->add('personalemail', 'entity', array(
                'label' => 'Personal de Soporte',
                'class' => 'GuiasDocentes\AppBundle\Entity\Personal',
                'property' => 'Email',
                'by_reference' => 'false',
                'query_builder' => function(PersonalRepository $pr) {
                    $query= $pr->createQueryBuilder('u')
                    ;
                    return $query;
                },
                'empty_value' => 'Elige un perfil de consulta:',
                ))
            // ->add('personalemail', new PersonalType(), array ('label' => false))
        ;
    }

 * Personal
 *
 * @ORM\Table(name="personal")
 * @ORM\Entity(repositoryClass="GuiasDocentes\AppBundle\Entity\PersonalRepository")

class Personal
{
    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=50, nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $email;

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

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

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

    /* Customized code */
    /**
     * @ORM\OneToMany(targetEntity="GuiasDocentes\AppBundle\Entity\TematicaSoporte", mappedBy="personalEmail")
     * @Assert\Valid()
     */    
    private $tematicasSoporte;

    public function __constructor(){
        $this->tematicasSoporte = new ArrayCollection();
        $this->hilos = new ArrayCollection();
    }

    public function addTematicasSoporte(\GuiasDocentes\AppBundle\Entity\TematicaSoporte $tematicaSoporte){
        $this->tematicasSoporte[] = $tematicaSoporte;
        return $this;
    }    

    public function setTematicasSoporte(\GuiasDocentes\AppBundle\Entity\TematicaSoporte $tematicaSoporte){
        $this->tematicasSoporte[] = $tematicaSoporte;
        return $this;
    }

    public function getTematicasSoporte(){
        return $this->tematicasSoporte;
    }

    /**
     * @ORM\OneToMany(targetEntity="GuiasDocentes\AppBundle\Entity\Hilo", mappedBy="personalemail")
     * @Assert\Valid()
     */    
    private $hilos;

    public function setHilos(Hilo $hilo){
        $this->hilos[] = $hilo;
        return $this;
    }

        public function addHilos(Hilo $hilo){
        $this->hilos[] = $hilo;
        return $this;
    }

    public function getHilos(){
        return $this->hilos;
    }

/**
 * TematicaSoporte
 *
 * @ORM\Table(name="tematica_soporte", indexes={@ORM\Index(name="fk_tematica_soporte_personal1_idx", columns={"personal_email"})})
 * @ORM\Entity(repositoryClass="GuiasDocentes\AppBundle\Entity\TematicaSoporteRepository")
 */
class TematicaSoporte
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="enunciado", type="text", nullable=true)
     */
    private $enunciado;

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

    /**
     * @var \Personal
     *
     * @ORM\ManyToOne(targetEntity="Personal", inversedBy="tematicasSoporte", cascade={"ALL"})
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="personal_email", referencedColumnName="email")
     * })
     */
    private $personalEmail;

/**
 * Hilo
 *
 * @ORM\Table(name="hilo", indexes={@ORM\Index(name="fk_Hilo_Personal1_idx", columns={"personalEmail"}), @ORM\Index(name="fk_Hilo_Consultante1_idx", columns={"consultanteEmail"})})
 * @ORM\Entity
 */
class Hilo
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var \GuiasDocentes\AppBundle\Entity\Personal
     *
     * @ORM\ManyToOne(targetEntity="Personal", inversedBy="hilos", cascade ={"ALL"})
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="personalEmail", referencedColumnName="email")
     * })
     */
    private $personalemail;

    /**
     * @var \GuiasDocentes\AppBundle\Entity\Consultante
     *
     * @ORM\ManyToOne(targetEntity="Consultante", inversedBy="hilos", cascade ={"ALL"} )
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="consultanteEmail", referencedColumnName="email")
     * })
     */
    private $consultanteemail;


    /* Customized code */

    /**
     * @ORM\OneToMany(targetEntity="GuiasDocentes\AppBundle\Entity\Consulta", mappedBy="hiloid")
     * @Assert\Valid()
     */
    private $consultas;

    public function __construct(){

        $this->consultas = new ArrayCollection();
    }

    public function setConsultas (Consulta $consulta){
        $this->hilos[]=$consulta;
    }

    public function addConsulta (\GuiasDocentes\AppBundle\Entity\Consulta $consulta){
        $this->hilos[] = $consulta;
    }


/* End customized code */

In the same way that you can see with this process I get select field generated with email of Personal class y need to show Enunciado of Tematica_soporte class. Thax

解决方案

Was enough with add a method inside TematicaSoporte in this way:

public function getEnunciado(){ return $this->getTematicasSoporte()[0]->getEnunciado(); } 

这篇关于恢复价值选择输入相关实体理论symfony 2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆