Symfony2.5.3表格字段"实体" - 无法加载类型"实体"

时间:2014-09-16 08:17:24

标签: php forms symfony entity formbuilder

添加“实体”类型的表单字段时,我遇到了SF2的这个问题。这是我的情况:

  1. 我有Country实体和CountryFormType
  2. 我有网络实体和NetworkFormType
  3. 此NetworkFormType包含Country字段,因此在我的NetworkFormType.php中:

    $builder->add('country', 'entity', [
        'label' => $translator->trans('global.labels.country'),
        'data_class' => 'MyBundle\Entity\Country',
        'property' => 'name',
        'choices' => $countries
    ])
    
  4. 我还在我的网络实体中声明了公共设置者和获取者。 顺便说一句,我将我的表格注册为服务:

    mybundle.form.network:
        class: MyBundle\Form\NetworkFormType
        tags:
            - { name: form.type, alias: mybundle_form_network }
    

    但它总是导致:

    Could not load type "entity"
    

    参考:entity Field Type

    有人有个主意吗?

2 个答案:

答案 0 :(得分:5)

确实很奇怪。

根据此API documentationEntityType类位于Doctrine Bridge内。

Packagist: https://packagist.org/packages/symfony/doctrine-bridge

你安装好了吗?也许您没有使用全栈Symfony?

答案 1 :(得分:2)

AFAIK,使用entity时,您需要提供class参数(it's marked as required in the docs

$builder->add('country', 'entity', [
    'label' => $translator->trans('global.labels.country'),
    'class' => 'MyBundle\Entity\Country',
    'property' => 'name',
    'choices' => $countries
])

我总是看到data_class用于自定义类型

class TaskType extends AbstractType
{

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class'      => 'Acme\TaskBundle\Entity\Task'
        ));
    }

   public function getName()
   {
       return 'task'; // this is the name of your type, you can use it instead 'entity' in your add method
   }

}

请参阅http://symfony.com/doc/current/book/forms.html