2016-10-12 47 views
2

我是新来的easyadmin包,我期待它是否可以直接从父对象 增加孩子的,所以我就3个对象: - 配方symfony的easyadmin一对多的形式

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Recipe 
* 
* @ORM\Table(name="recipe") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\RecipeRepository") 
*/ 
class Recipe 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=100, nullable=true) 
    */ 
    private $name; 

    /** 
    * @var \DateTime 
    * 
    * @ORM\Column(name="createdon", type="datetime", nullable=true) 
    */ 
    private $createdon; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="description", type="text", nullable=true) 
    */ 
    private $description; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="version", type="string", length=5, nullable=true) 
    */ 
    private $version; 

    /** 
    * @ORM\OneToMany(targetEntity="Recipe_Product", mappedBy="recipe") 
    */ 
    private $recipeproducts; 
... 

- Recipe_Product(其具有作为属性输入量和单位)

namespace AppBundle\Entity; 

    use Doctrine\ORM\Mapping as ORM; 

    /** 
    * Recipe_Product 
    * 
    * @ORM\Table(name="recipe__product") 
    * @ORM\Entity(repositoryClass="AppBundle\Repository\Recipe_ProductRepository") 
    */ 
class Recipe_Product 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="quantity", type="decimal", precision=10, scale=2, nullable=true) 
    */ 
    private $quantity; 


    /** 
    * @ORM\ManyToOne(targetEntity="Recipe", inversedBy="recipeproducts") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="recipeid", referencedColumnName="id") 
    * }) 
    */ 
    private $recipe; 


    /** 
    * @ORM\ManyToOne(targetEntity="Product", inversedBy="recipeproducts") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="Productid", referencedColumnName="id") 
    * }) 
    */ 
    private $product; 

    /** 
    * @ORM\ManyToOne(targetEntity="Unit", inversedBy="recipeproducts") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="Unitid", referencedColumnName="id") 
    * }) 
    */ 
    private $unit; 
... 

,当然是一个 - 产品。

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

    /** 
* Product 
* 
* @ORM\Table(name="product") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ProductRepository") 
*/ 
class Product 
{ 
    /** 
    * @var int 
    * 
    * @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; 

/** 
* @var string 
* 
* @ORM\Column(name="ref", type="string", length=25) 
*/ 
private $ref; 

/** 
* @var string 
* 
* @ORM\Column(name="ref4stat", type="string", length=25) 
*/ 
private $ref4Stat; 
/** 
* @var int 
* 
* @ORM\Column(name="size", type="integer") 
*/ 
private $size; 

/** 
* @ORM\ManyToOne(targetEntity="Unit", inversedBy="products") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="unitid", referencedColumnName="id") 
* }) 
*/ 
private $unit; 

/** 
* @ORM\ManyToOne(targetEntity="ProductType", inversedBy="products") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="producttypeid", referencedColumnName="id") 
* }) 
*/ 
private $producttype; 


/** 
* @ORM\OneToMany(targetEntity="Recipe_Product", mappedBy="product") 
*/ 
private $recipeproducts; 
... 

当编辑配方,我想能够直接添加新recipe_product线,但我避风港t上找不到一种方式来做到这一点...

任何人有一个想法?

添加于14/10: 我找到了一种方法来呈现形式...... 我easyadmin配置文件,我创建了以下条目:

 Recipe: 
     class: AppBundle\Entity\Recipe 
     form: 
      fields: 
       - name 
       - beer 
       - version 
       - description 
       - createdon 
       - { property: 'recipeproducts', label: 'Ingredients', type: 'collection', type_options: {entry_type: 'AppBundle\Form\Recipe_ProductType', by_reference: false} } 

与表单代码为

<?php 

namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\OptionsResolver\OptionsResolver; 
use Symfony\Component\Form\Extension\Core\Type\HiddenType; 

class Recipe_ProductType extends AbstractType 
{ 
    /** 
    * @param FormBuilderInterface $builder 
    * @param array $options 
    */ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 

      ->add('product') 
      ->add('quantity')  
      ->add('unit') 
     ; 
    } 

    /** 
    * @param OptionsResolver $resolver 
    */ 
    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\Recipe_Product' 
     )); 
    } 
} 

这使得形式(即不要吨创建2个实体之间的链接,但必须是在管理控制器我想)

回答