0

チームメンバーのエンティティがあり、仕様ごとに値を持つことができる仕様のリストがあります。

しかし、SpecificationValue を入力できる各仕様の背後にあるフィールドを使用して、仕様の完全なリストを取得するにはどうすればよいでしょうか。

その値は、TeamMember および Specification への ForeignKey とともに SpecificationValue エンティティに格納されます。

だから私はリストが欲しい: [TeamMember edit_form > Specifications[] > 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;
    }
4

1 に答える 1

0

探しているのは、仕様エンティティのコレクションから選択できるフォームのエンティティ フィールド タイプです。

チームメンバーの種類

->add('specifications', 'collection', array( 
    'type' => new SpecificationValueType(),
    'allow_add' => true, 
     // ... other options
  ))
  • specificationValue form-type に、仕様用の「エンティティ」フィールドと、対応する値用の「値」フィールド ( text? ) を追加します。

仕様値タイプ

->add('specification', 'entity', array(
      'class' => 'YourBundle:SpecificationValue',
      'property' => 'name',
      // ... other options
  ))
->add('value')
于 2013-05-27T11:03:30.950 に答える