2014-08-29 2 views
0

Domain form많은 관계 : ArrayCollection 문제

도메인과 사이트 간에는 많은 관계가 있습니다. 나는 새 도메인을 추가 할 때이 오류가 있습니다

유형 교리 \ 공통 \ 모음 \의 ArrayCollection에 협회 Eliophot \ BackBundle \ 엔티티 \ 도메인 # 사이트,하지만 Eliophot \ BackBundle 기대의

찾을 실체

: 이것은 내 DomainType입니다

public function createDomainAction(Request $request) 
    { 
     $domain = new Domain; 

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

     $newForm = $this->createForm(new DomainType(), $domain); 

     $newForm->handleRequest($request); 

     if ($newForm->isValid()) { 
      $entityManager = $this->get('doctrine')->getManager(); 
      $entityManager->persist($domain); 
      $entityManager->flush(); 
      $this->get('session')->getFlashBag()->add('success', 'Le domaine a été crée'); 

      return $this->redirect($this->generateUrl('domain_list')); 
     } 

     return $this->render('EliophotBackBundle:Domain:new_domain.html.twig', array(
      'domain' => $domain, 
      'form' => $newForm->createView(), 
     )); 
    } 

: \ 엔티티 \ 사이트

이 내 DomainController 선택이다

class DomainType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('domainName','text', array(
       'label' => 'Nom du domaine' 
      )) 
      ->add('site','entity', array(
       'class' => 'EliophotBackBundle:Site', 
       'property' => 'name', 
       'label' => 'Sélectionnez un ou plusieurs site(s)', 
       'multiple' => true 
      )); 
    } 

    public function getName() 
    { 
     return 'domain'; 
    } 
... 
} 

내 SiteType :

class SiteType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name', 'text', array(
       'label' => 'Nom du site', 
       'required' => true 
      )) 
      ->add('nameBundle', 'text', array(
       'label' => 'Nom du bundle du site', 
       'required' => true 
      )) 
      ->add('numClient', 'integer', array(
       'label' => 'Numéro client du site', 
       'required' => true 
      )); 
    } 

    public function getName() 
    { 
     return 'site'; 
    } 
... 
} 

사이트 엔티티 :

/** 
* Site 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="Eliophot\BackBundle\Entity\SiteRepository") 
*/ 
class Site 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

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

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

    /** 
    * @var integer 
    * 
    * @ORM\Column(name="num_client", type="integer") 
    */ 
    private $numClient; 

    /** 
    * @ORM\OneToMany(targetEntity="Domain", mappedBy="site") 
    */ 
    protected $domains; 

    /** 
    * Initialisation 
    */ 
    public function __construct() 
    { 
     $this->domains = new ArrayCollection(); 
    } 

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

    /** 
    * Set name 
    * 
    * @param string $name 
    * @return Site 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * Set nameBundle 
    * 
    * @param $nameBundle 
    * @return $this 
    */ 
    public function setNameBundle($nameBundle) 
    { 
     $this->nameBundle = $nameBundle; 

     return $this; 
    } 

    /** 
    * Get nameBundle 
    * 
    * @return string 
    */ 
    public function getNameBundle() 
    { 
     return $this->nameBundle; 
    } 

    /** 
    * Set numClient 
    * 
    * @param integer $numClient 
    * @return Site 
    */ 
    public function setNumClient($numClient) 
    { 
     $this->numClient = $numClient; 

     return $this; 
    } 

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

    /** 
    * Get domains 
    * 
    * @return ArrayCollection 
    */ 
    public function getDomains() 
    { 
     return $this->domains; 
    } 

    /** 
    * Set domains 
    * 
    * @param ArrayCollection $domains 
    */ 
    public function setDomains(ArrayCollection $domains) 
    { 
     $this->domains = $domains; 
    } 
} 

도메인 엔티티 : 오류가 말한다

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

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

    /** 
    * @ORM\ManyToOne(targetEntity="Site", inversedBy="domains") 
    * @ORM\JoinColumn(name="site_id", referencedColumnName="id") 
    */ 
    protected $site; 


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

    /** 
    * Set domainName 
    * 
    * @param string $domainName 
    * @return Domain 
    */ 
    public function setDomainName($domainName) 
    { 
     $this->domainName = $domainName; 

     return $this; 
    } 

    /** 
    * Get domainName 
    * 
    * @return string 
    */ 
    public function getDomainName() 
    { 
     return $this->domainName; 
    } 

    public function getSite() 
    { 
     return $this->site; 
    } 

    public function setSite($site) 
    { 
     $this->site = $site; 

     return $this; 
    } 
} 

처럼, 내가 심포니 생각은 사이트 개체를 기대하지 arrayCollection ... 내가 추가 한 후 var_dump 요청을 받으면이 사이트에 대한 정보를 얻습니다. 필드 (이 예에서는 내가 "사이트 드 테스트 2"를 "사이트 드 테스트 1"을 선택 한) :

array(2) { [0]=> string(1) "1" [1]=> string(1) "2" } 

=>이 질문에

도메인에 대한 도메인 테이블이 새로운 라인을 추가해야합니다

어떻게하면됩니까?

+0

엔티티 클래스를 표시 할 수 있습니까? – sebbo

+0

예, pls보세요, 2 개의 엔티티 클래스를 추가하여 답변을 편집합니다 :) – DOZ

+0

그리고 도달하려는 사이트는 하나의 사이트가 여러 개의 도메인을 가질 수 있다는 것입니다. – sebbo

답변

1

개체를 다른 방법으로 연결하려고하는 것 같습니다. 프론트 엔드는 사용자가 하나의 도메인을 입력하고이 도메인과 연관되어야하는 사이트를 선택할 수있는 양식을 보여줍니다.

내 견해로는 사용자가 사이트 이름을 입력하고 연결할 도메인을 선택하는 양식을 만들어야합니다. 다른 방법으로.

+0

알겠습니다. 시도해 보겠습니다. 감사 :) – DOZ