dppb79372 2015-11-08 13:21
浏览 32

Symfony FormType - ManyToOne无法正常工作

I try to create a new FormType for my Symfony Application. I have a ManyToOne field : CategoryGrower. The problem is that I cannot display the select field. It appears but is still empty.

<?php
namespace FermierMalin\Bundle\GrowerBundle\Entity;

/**
 * @ORM\Entity (repositoryClass="FermierMalin\Bundle\GrowerBundle\Entity\GrowerRepository")
 * @ORM\Table (name="grower")
 */
class Grower
{
    /**
     * @ORM\Id
     * @ORM\Column (type="integer")
     * @ORM\GeneratedValue (strategy="AUTO")
     */
    private $id;

    /**
     * @Assert\NotBlank(message="Le nom de l'exploitation est requis")
     * @Assert\Length(min=2, max=100, minMessage="Le nom de l'exploitation doit contenir au moins {{ limit }} caractères", maxMessage="Le nom de l'exploitation doit contenir moins de {{ limit }} caractères")
     * @ORM\Column(name="name", type="string", length=255)
     */
    private $name;

    /**
     * @ORM\ManyToOne(targetEntity="CategoryGrower", inversedBy="growers")
     * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     **/
    private $category;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set name
     *
     * @param string $name
     * @return Grower
     */
    public function setName($name)
    {
        $this->name = $name;

        return $this;
    }

    /**
     * Get name
     *
     * @return string 
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Set category
     *
     * @param CategoryGrower $category
     * @return Grower
     */
    public function setCategory(CategoryGrower $category = null)
    {
        $this->category = $category;

        return $this;
    }

    /**
     * Get category
     *
     * @return CategoryGrower
     */
    public function getCategory()
    {
        return $this->category;
    }
}

<?php
namespace FermierMalin\Bundle\GrowerBundle\Entity;

/**
 * @ORM\Entity (repositoryClass="FermierMalin\Bundle\GrowerBundle\Entity\CategoryGrowerRepository")
 * @ORM\Table (name="category_grower")
 */
class CategoryGrower
{
    public function __construct() {
        $this->growers = new ArrayCollection();
    }

    function __toString() {
        return $this->label;
    }

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(name="label", type="string")
     */
    private $label;

    /**
     * @ORM\Column(name="parent", type="string")
     */
    private $parent;

    /**
     * @ORM\OneToMany(targetEntity="Grower", mappedBy="category")
     **/
    private $growers;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set label
     *
     * @param string $label
     * @return CategoryGrower
     */
    public function setLabel($label)
    {
        $this->label = $label;

        return $this;
    }

    /**
     * Get label
     *
     * @return string 
     */
    public function getLabel()
    {
        return $this->label;
    }

    /**
     * Set parent
     *
     * @param string $parent
     * @return CategoryGrower
     */
    public function setParent($parent)
    {
        $this->parent = $parent;

        return $this;
    }

    /**
     * Get parent
     *
     * @return string 
     */
    public function getParent()
    {
        return $this->parent;
    }

    /**
     * Add growers
     *
     * @param Grower $growers
     * @return CategoryGrower
     */
    public function addGrower(Grower $growers)
    {
        $this->growers[] = $growers;

        return $this;
    }

    /**
     * Remove growers
     *
     * @param Grower $growers
     */
    public function removeGrower(Grower $growers)
    {
        $this->growers->removeElement($growers);
    }

    /**
     * Get growers
     *
     * @return Collection
     */
    public function getGrowers()
    {
        return $this->growers;
    }
}

<?php
namespace FermierMalin\Bundle\GrowerBundle\Form;

class GrowerType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name', 'text')
            ->add('category', 'entity', array(
                'class' => 'FermierMalin\Bundle\GrowerBundle\Entity\CategoryGrower',
                'group_by' => 'parent',
            ))
            ->add('Enregistrer', 'submit')
        ;
    }

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

    /**
     * @return string
     */
    public function getName()
    {
        return 'fermiermalin_bundle_growerbundle_grower';
    }
}

In my controller :

$grower = new Grower();
$formGrower = $this->createForm(new GrowerType(), $grower);
return array(
    'formGrower' => $formGrower->createView(),
);

In my view :

<h2>Information</h2>
{{ form(formGrower) }}

But the select in HTML code is empty :

<div>                
    <label for="fermiermalin_bundle_growerbundle_grower_category" class="required">Category</label>        
    <select id="fermiermalin_bundle_growerbundle_grower_category" name="fermiermalin_bundle_growerbundle_grower[category]" required="required">
    </select>
</div>

In my DB, I have some datas :

ID - label - parent
1 - Fruits - Maraichers
2 - Légumes - Maraichers
3 - Vin - Boissons
4 - Jus - Boissons
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 2024-五一综合模拟赛
    • ¥15 如何将下列的“无限压缩存储器”设计出来
    • ¥15 下图接收小电路,谁知道原理
    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度
    • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
    • ¥15 ETLCloud 处理json多层级问题
    • ¥15 matlab中使用gurobi时报错
    • ¥15 这个主板怎么能扩出一两个sata口