首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony3表单EntityType

Symfony3表单EntityType
EN

Stack Overflow用户
提问于 2016-09-04 02:44:41
回答 1查看 767关注 0票数 0

我正在使用Symfony3,在为EntityType::class创建表单时遇到以下错误

我的实体命名空间Project\CoreBundle\ entity \CountryEntity

代码语言:javascript
复制
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class, ['label' => 'Name *', 'attr' => ['data-help'  => 'enter language name here.']])
        ->add('iso', TextType::class, ['label' => 'ISO *', 'attr' => ['data-help'  => 'enter language code here.']])
        ->add('defaultLanguage', EntityType::class,
            array(
                'class' => 'Project\CoreBundle\Entity\CountryEntity'
            )
        )
        ->getForm();
    ;
}

抛出可捕获的致命错误:类Project\CoreBundle\Entity\CountryEntity的对象无法转换为字符串

任何帮助都将是有用的,谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-04 02:56:46

因为EntityType是ChoiceType的扩展,所以它需要知道如何将实体呈现到表单中。如果您不传递任何信息,它将尝试使用__toString()方法。如果它没有被定义,你会得到这个错误。

您可以为您的字段指定choice_label选项,而不是实现__toString(),该选项应该是应该显示的属性的路径规范。例如,您的CountryEntity类可能具有name属性:

代码语言:javascript
复制
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class, ['label' => 'Name *', 'attr' => ['data-help'  => 'enter language name here.']])
        ->add('iso', TextType::class, ['label' => 'ISO *', 'attr' => ['data-help'  => 'enter language code here.']])
        ->add('defaultLanguage', EntityType::class,
            array(
                'class' => 'Project\CoreBundle\Entity\CountryEntity',
                'choice_label' => 'name'
            )
        )
        ->getForm();
    ;
}

另请参阅http://symfony.com/doc/current/reference/forms/types/entity.html上的EntityType文档。

诚挚的问候

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39310252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档