2013-05-27 2 views
0

У меня есть Entitiy TeamMembers, у которого есть список спецификаций, которые могут иметь для каждой спецификации значение.Заполните форму FormType на основе ввода Entity Symfony2

Но как я могу получить полный список спецификаций с полем за каждой спецификацией, где я могу заполнить спецификацию.

Это значение будет храниться в SpecificationValue Entitiy с ForeignKey to TeamMember и спецификацией.

Так что я хочу список: [edit_form командного игрока> Технические характеристики []> SpecificationValue]

Подробнее:

// FORM 
class SpecificationValueType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('value') 
      ->add('specification') 
      ->add('teammember') 
     ; 
    } 

// ENTITY 
class SpecificationValue 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @ORM\ManyToOne(targetEntity="Specifications") 
    * @ORM\JoinColumn(name="specification_id", referencedColumnName="id") 
    */ 
    protected $specification; // refernce for specification entity > name, type[ENUM('input','textarea')] 

    /** 
    * @ORM\ManyToOne(targetEntity="Teammember") 
    * @ORM\JoinColumn(name="teammember_id", referencedColumnName="id") 
    */ 
    protected $teammember; 

    /** 
    * @var string 
    * @ORM\Column(name="value", type="string", length=200, nullable=true) 
    */ 
    protected $value; // value that can be filled in for each 


// ENTITY 
class TeamMember 
{ 
    /** 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 

    /** 
    * @var string 
    * @ORM\Column(name="name", type="string", length=250) 
    */ 
    protected $name; // and some other fields, now skipped for the example 

    /** 
    * @ORM\OneToMany(targetEntity="SpecificationValue", mappedBy="specifications") 
    */ 
    protected $specifications; 

///

/** 
    * Add specificationValue 
    * 
    * @param \Foobar\MyBundle\Entity\SpecificationValue $specifications 
    * @return SpecificationValue 
    */ 
    public function addSpecification(\Foobar\MyBundle\Entity\SpecificationValue $specifications) 
    { 
     $this->specifications[] = $specifications; 

     return $this; 
    } 

    /** 
    * Remove specifications 
    * 
    * @param \Foobar\MyBundle\Entity\SpecificationValue $specifications 
    */ 
    public function removeSpecification(\Foobar\MyBundle\Entity\SpecificationValue $specifications) 
    { 
     $this->specifications->removeElement($specifications); 
    } 

    /** 
    * Get specifications 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getSpecifications() 
    { 
     return $this->specifications; 
    } 

    /** 
    * Get specifications 
    * 
    * @return \Doctrine\Common\Collections\Collection 
    */ 
    public function getSpecification() 
    { 
     return $this->specification; 
    } 
+0

продублируйте из http://stackoverflow.com/questions/16763192/symfony2-filling-all-fields-of-table-related-to-a-entity .. – nifr

+0

фраза правильный вопрос пожалуйста ... Какой список? тип формы или что? selectboxes? ... поставьте все необходимые сущности и типы форм, если вы хотите получить ответ. никто не собирается кодировать это для вас. – nifr

ответ

0

То, что вы ищете Entity field-type в форме, чтобы иметь возможность выбирать из вашей коллекции объектов спецификации.

  • Добавить в свой командного игрока форм-типа а collection field-type (с allow_add, прототип опции) из SpecificationValue форм-типов

TeamMemberType

->add('specifications', 'collection', array( 
    'type' => new SpecificationValueType(), 
    'allow_add' => true, 
    // ... other options 
)) 
  • Добавить в форму specificationValue -type an 'объект' поле для спецификации и 'v alue '(текст?) для соответствующего значения.

SpecificationValueType

->add('specification', 'entity', array(
     'class' => 'YourBundle:SpecificationValue', 
     'property' => 'name', 
     // ... other options 
)) 
->add('value') 
+0

Хм, звучит проще, это похоже на меня. $ builder-> добавить ('спецификации', 'коллекции', массив ('типа' => новый \ Foobar \ MyBundle \ Form \ SpecificationValueType(), 'allow_add' => верно, 'by_reference' => false ) ); А как насчет остальных. – user2422992

+0

что в вашей спецификации? добавьте его в вопрос. – nifr

+0

добавил его в startpost – user2422992

Смежные вопросы