2012-12-29 23 views
1

我試圖構建「編輯」控制器/視圖但我遇到這個錯誤。從我讀過它可能是一個分離問題,我試圖解決它,但我不知道它是什麼問題。它應該返回一個集合,但我甚至不知道「代理」意味着什麼以及它如何獲得它。Symfony2 - Doctrine2 - ManyToOne關係/預期論點類型「Doctrine Common Collections Collection」,「代理 ...實體...代理」給出

爲此我正在創建的編輯視圖的實體:

<?php 

namespace Monse\WebBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Monse\WebBundle\Entity\BasedeDatos 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class BasedeDatos 
{ 
    /** 
    * @var integer $id 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
* @ORM\ManyToOne(targetEntity="Monse\WebBundle\Entity\ServidoresBD") 
* @ORM\JoinColumn(name="servidores_id", referencedColumnName="id",nullable=false) 
* 
*/ 
    private $servidorBD; 

    /** 
    * @var string $nombreBD 
    * 
    * @ORM\Column(name="nombreBD", type="string", length=255,unique=true) 
    */ 
    private $nombreBD; 


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

    /** 
    * Set servidorBD 
    * 
    * @param integer $servidorBD 
    */ 
    public function setServidorBD(\Monse\WebBundle\Entity\ServidoresBD $servidorBD) 
    { 
     $this->servidorBD = $servidorBD; 
    } 

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

    /** 
    * Set nombreBD 
    * 
    * @param string $nombreBD 
    */ 
    public function setNombreBD($nombreBD) 
    { 
     $this->nombreBD = $nombreBD; 
    } 

    /** 
    * Get nombreBD 
    * 
    * @return string 
    */ 
    public function getNombreBD() 
    { 
     return $this->nombreBD; 
    } 
    public function __construct() 
    { 
     $this->servidorBD = new Doctrine\Common\Collections\ArrayCollection(); 
    } 
} 

FormType:

<?php 

namespace Monse\WebBundle\Form; 
use Doctrine\ORM\EntityRepository; 
use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilder; 

class BasedeDatosType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('ServidorBD','entity', 
        array ('class' => 'MonseWebBundle:ServidoresBD', 
         'multiple' => true, 
         'required' => true, 
         'label' => 'Servidor de Base de Datos: ', 
         'query_builder' => function(EntityRepository $er) { 
         return $er->createQueryBuilder('u') 
         ->orderBy('u.url', 'ASC'); 
                      }, 
         )) 
      ->add('nombreBD','text', array('required' => true, 'label' => 'Nombre Base de Datos: ')) 
      ->add('UsuarioBD','entity',array('class' => 'MonseWebBundle:UsuariosBD','multiple' => true, 
              'required' => true, 'label' => 'Usuario Asociado: ', 
              'property_path' => false, 
              'query_builder' => function (EntityRepository $er){ 
               return $er->createQueryBuilder('s') 
               ->orderBy ('s.usuario','ASC'); },)) 
      ; 

    } 

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

負責的問題(我認爲)的實體:

<?php 

namespace Monse\WebBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Monse\WebBundle\Entity\ServidoresBD 
* 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class ServidoresBD 
{ 
    /** 
    * @var integer $id 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 
    /** 
    * @var string $url 
    * 
    * @ORM\Column(name="url", type="string", length=255) 
    */ 
    private $url; 
    /** 
    * 
    * @ORM\OneToOne (targetEntity="Monse\WebBundle\Entity\Dominios") 
    * @ORM\JoinColumn(name="dominio_id", referencedColumnName="id",nullable=false,unique=true) 
    */ 
    private $dominio; 


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

    /** 
    * Set dominio 
    * 
    * @param integer $dominio 
    */ 
    public function setDominio(\Monse\WebBundle\Entity\Dominios $dominio) 
    { 
     $this->dominio = $dominio; 
    } 

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

    /** 
    * Set url 
    * 
    * @param string $url 
    */ 
    public function setUrl($url) 
    { 
     $this->url = $url; 
    } 

    /** 
    * Get url 
    * 
    * @return string 
    */ 
    public function getUrl() 
    { 
     return $this->url; 
    } 
    public function __toString() 
{ 
    return $this->getUrl(); 
} 

} 

表格類型:

<?php 

namespace Monse\WebBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilder; 

class ServidoresBDType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('url') 
      ->add('dominio', 'collection', array('type' => new DominiosType())); 
     ; 
    } 
public function getDefaultOptions(array $options) 
    { 
     return array(
      'data_class' => 'Monse\WebBundle\Entity\ServidoresBD' 
     ); 
    } 
    public function getName() 
{ 
    return 'issue_selector'; 
} 
} 

我應該在哪裏添加arraycollection來返回?我如何防止這種情況再次發生?我很抱歉,如果這是一個愚蠢的問題,我正在努力學習。

回答

0

我在第一種表單類型中將兩個「多個」屬性更改爲false。

相關問題