2012-03-01 3 views
9

엔티티를 사용하여 양식을 작성하여 일대일 관계로 모든 필드를 가져올 수 있는지 궁금합니다. 명확히하기 :엔티티 (일대일 관계)를 사용하여 자동으로 양식 작성

User.php 엔티티 (모든 명백한 필드, 이름, 성, 장르 등)와 Address.php 엔티티가 있습니다. 내가 원하는 것은 주소 엔티티의 속성을 하나씩 추가하지 않고 전체 양식을 작성하고 데이터베이스에 적절한 관계로 저장하는 것입니다.

내가 (내가 코드를 조금 trimed 한) 시도했다, 그러나 분명히 올바른 방법이 아니다 :

사용자 엔티티 :

class User implements UserInterface { 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 


/** 
* @ORM\Column(type="string", length=100, nullable=TRUE) 
*/ 
protected $firstName; 

/** 
* @ORM\Column(type="string", length=200) 
* @Assert\NotBlank() 
*/ 
protected $lastNames; 

/** 
* @ORM\OneToOne(targetEntity="Capsa\Bundle\ClubCommonBundle\Entity\Address") 
*/ 
protected $address; 

주소 클래스

class Address { 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length=100, unique=TRUE) 
* @Assert\NotBlank() 
*/ 
protected $streetName; 

/** 
* @ORM\Column(type="string", length=50) 
*/ 
protected $streetNumber; 

양식 빌더 :

public function buildForm(FormBuilder $builder, array $options) { 
    $builder->add('login', 'text') 
      ->add('password', 'password') 
      ->add('firstName', 'text', array("required" => FALSE)) 
      ->add('lastNames', 'text') 
      ->add('address', 'entity', array(
       'class' => 'CapsaClubCommonBundle:Address', 
       'property'=>'streetName' 
      )); 
} 
,

테이블의 fieldName 필드 만 가져 와서 목록에 넣습니다.

답변

0

엔티티 필드 유형 대신 Collection form type을 사용해보십시오. this tutorial을 참조하십시오.

+19

마침내 나는 전체 객체를로드하기 위해 이것을 사용했다. AddressType – Manu

+3

@Manu 당신의 코멘트는 정말로 답이다. 나를 위해 일했다. 감사. –

+2

다음은 Manu의 코멘트입니다. 새로운 구문이 있습니다 :'''-> add ('address', AddressType :: class)''' – 0x1gene