forms - multiple input fields for related entities -


i have symfony project entities: purchaseorder, article, supplier. order can have multiple articles , order can have multiple suppliers. can set amount of each article through articleorderreference (entity).

i build form, can add articles order amount (entry in articleorderreference). furthermore have form, can add suppliers order.

but problem is, want create form, have amount input field (for every article related order in articleorderreference), should appear every supplier related order. example:

order 1:  article1     [amount inputfield supplier1] [amount inputfield supplier2] ...   article2     [amount inputfield supplier1] [amount inputfield supplier2] ... 

so build entity named articleordersupplierreference, includes supplier_id , articleorderreference_id , amount .

i have no clue, how realize this. guys told me use embedded collections, don't know how use them in such situation. ideas?

articleorderreference:

class articleorderreference {    ...  /** @orm\manytoone(targetentity="article", inversedby="articles") */ protected $article;  /** @orm\manytoone(targetentity="purchaseorder", inversedby="purchaseorders") */ protected $purchaseorder;  /**  * @var integer  *  * @orm\column(name="amount", type="integer")  */ private $amount; ... } 

article:

class article {     /**      * @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;      /** @orm\onetomany(targetentity="articleorderreference", mappedby="article") */     protected $articles;      public function __construct() {         $this->articles = new arraycollection();     }... 

order:

class purchaseorder {     /**      * @var integer      *      * @orm\column(name="id", type="integer")      * @orm\id      * @orm\generatedvalue(strategy="auto")      */     private $id;      /**      * @var \datetime      *      * @orm\column(name="date", type="datetime")      */     private $date;      /** @orm\onetomany(targetentity="articleorderreference", mappedby="purchaseorder") */     protected $purchaseorders;      /**      * @orm\manytomany(targetentity="supplier", inversedby="purcaseorders")      * @orm\jointable(name="purchaseorders_suppliers")      */     private $suppliers;      public function __construct()     {         $this->purchaseorders = new arraycollection();         $this->suppliers = new arraycollection();     }... 

supplier:

class supplier {     /**      * @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;       /**      * @orm\manytomany(targetentity="purchaseorder", mappedby="suppliers")      */     private $purchaseorders;      public function __construct() {         $this->purchaseorders = new arraycollection();     } 

articleordersupplierreference:

 class aosupplierreference {     /**      * @var integer      *      * @orm\column(name="id", type="integer")      * @orm\id      * @orm\generatedvalue(strategy="auto")          */     private $id;  /** @orm\manytoone(targetentity="articleorderreference", inversedby="articleorderreferences") */ protected $articleorderreference;  /** @orm\manytoone(targetentity="supplier", inversedby="suppliers") */ protected $supplier;  /**  * @var integer  *  * @orm\column(name="amount", type="integer")  */ private $amount; 

i solved double embedded collections.

first built 3 formtypes:

with first 1 collect related articleorderreferences: in controller call this: $form = $this->createform(new amountordertype(), $order); , return twig file.

$builder->add('purchaseorders', 'collection', array('type' => new amountorderarticletype())); 

with second 1 collect related articleordersupplierreferences:

$builder->add('articleorderreferences', 'collection', array('type' => new amountordersubarticletype())); 

and third 1 set amount:

$builder->add('amount'); 

the twig file:

{% purchaseorder in form.purchaseorders %}                         <span class="articleorderreferences">                             {% articleorderreference in purchaseorder.articleorderreferences %}                                 {{ form_errors(articleorderreference.amount) }}                                 {{ form_widget(articleorderreference.amount, { 'attr': {'class': 'input-mini'} }) }}                             {% endfor %}<br>                         </span>  {% endfor %} 

Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -