2012-01-13 3 views
2

sonata admin generator를 사용하여 CRUD를 구현하려고합니다.sonata admin generator를 사용하여 symfony 2 교리 일대 다 관계에 embed form

두 개의 테이블과 공급 업체 및 공급 업체 연락처가 있습니다. 내 엔티티 테이블

use Doctrine\Common\Collections\ArrayCollection; 
use Doctrine\ORM\Mapping as ORM; 
use Gedmo\Mapping\Annotation as Gedmo; 
/** 
* @ORM\Entity 
* @ORM\Table(name="vendor") 
*/ 
class Vendor{ 
    /** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 
/** 
* @ORM\OneToMany(targetEntity="VendorContact", mappedBy="vendor_contact") 
*/ 
public $contact; 
/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $name; 
/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $userName; 
/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $password; 
/** 
* @ORM\Column(type="integer") 
*/ 
private $status; 
/** 
* @ORM\Column(type="date") 
*/ 
protected $contractBeginDate; 

/** 
* @ORM\Column(type="date") 
*/ 
protected $contractEndDate; 
/** 
* @ORM\Column(type="datetime", nullable="true") 
*/ 
protected $createdAt; 

/** 
* @ORM\Column(type="datetime", nullable="true") 
*/ 
protected $updatedAt; 

public function __construct() 
{ 
    $this->contact = new ArrayCollection(); 
} 

그리고 내 공급 업체 연락처 엔티티 클래스는이

 use Doctrine\ORM\Mapping as ORM; 
     use Gedmo\Mapping\Annotation as Gedmo; 

/** 
* @ORM\Entity 
* @ORM\Table(name="vendor_contact") 
*/ 
class VendorContact{ 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 
/** 
* @ORM\ManyToOne(targetEntity="Vendor", inversedBy="contact") 
* @ORM\JoinColumn(name ="vendor_id", referencedColumnName="id") 
*/ 
protected $vendorContact; 

/** 
* @ORM\Column(type="string", length=1000) 
*/ 
protected $street; 
/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $city; 
/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $state; 
/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $country; 
/** 
* @ORM\Column(type="string", length=50) 
*/ 
protected $zip; 
/** 
* @ORM\Column(type="string", length=50) 
*/ 
protected $contact_numb; 
/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $email; 
/** 
* @ORM\Column(type="integer") 
*/ 
protected $contact_type; 
/** 
* @ORM\Column(type="datetime", nullable="true") 
*/ 
protected $createdAt; 

/** 
* @ORM\Column(type="datetime", nullable="true") 
*/ 
protected $updatedAt; 

내 소나타 관리 클래스처럼 같은입니다 같이 있습니다 :

class VendorAdmin extends Admin 
{ 

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
    ->with('General') 
    ->add('name') 
    ->add('user_name','text') 
    ->add('password','text') 
    ->add('status') 
    ->add('contract_begin_date','date') 
    ->add('contract_end_date','date'); 
    $formMapper->add('contact', 'collection', array('type' => new VendorContactType())); 
// ->end(); 
    ; 
} 

protected function configureListFields(ListMapper $listMapper) 
{ 
    $listMapper 
    ->addIdentifier('id') 
    ->add('name') 
    ->add('userName') 
    ->add('contractBeginDate') 
    ->add('contractEndDate') 
    ->add('_action', array(), array(
      'actions' => array(
       'edit' => array(), 
    ), 
    )) 
    ; 
} 

}

그리고 공급 업체 연락처 양식 작성 도구는 다음과 같습니다.

class VendorContactType extends AbstractType 
    { 
     public function buildForm(FormBuilder $builder, array $options) 
     { 
    $builder 
    ->add('street') 
    ->add('city') 
    ->add('state') 
    ->add('country') 
    ->add('zip') 
    ->add('contact_numb') 
    ->add('email') 
    ->add('contact_type') 
    ; 
} 

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

public function getDefaultOptions(array $options){ 
    return array('data_class' => 'JiniVod\StoreBundle\Entity\VendorContact'); 
} 
} 

그러나 내가이 소책자를 사용하여 sonata admin crud function을 사용하면 공급 업체 연락처에 대한 양식 필드가 표시되지 않습니다. 나는 라벨 연락을 받고있다.

아무도 도와 줄 수 없다.

미리 감사드립니다.

답변

1

'collection'유형 대신 'sonata_type_model'을 사용하십시오.

관련 문제