添加“实体”类型的表单字段时,我遇到了SF2的这个问题。这是我的情况:
此NetworkFormType包含Country字段,因此在我的NetworkFormType.php中:
$builder->add('country', 'entity', [
'label' => $translator->trans('global.labels.country'),
'data_class' => 'MyBundle\Entity\Country',
'property' => 'name',
'choices' => $countries
])
我还在我的网络实体中声明了公共设置者和获取者。 顺便说一句,我将我的表格注册为服务:
mybundle.form.network:
class: MyBundle\Form\NetworkFormType
tags:
- { name: form.type, alias: mybundle_form_network }
但它总是导致:
Could not load type "entity"
有人有个主意吗?
答案 0 :(得分:5)
确实很奇怪。
根据此API documentation,EntityType
类位于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
}
}