Php Symfony2可捕获致命错误:参数1传递给实体可捕获致命错误:参数1传递给实体

Php Symfony2可捕获致命错误:参数1传递给实体可捕获致命错误:参数1传递给实体,php,forms,symfony,entity,symfony-2.6,Php,Forms,Symfony,Entity,Symfony 2.6,我犯了这个错误,我被困了好几个小时 Catchable Fatal Error: Argument 1 passed to Thinking\ThinkBundle\Entity\InYourMind::setThinkFriend() must be an instance of Thinking\ThinkBundle\Entity\InYourMindFriend, array given, called in /var/www/html/thinkroulette/vars/vendor

我犯了这个错误,我被困了好几个小时

Catchable Fatal Error: Argument 1 passed to Thinking\ThinkBundle\Entity\InYourMind::setThinkFriend() must be an instance of Thinking\ThinkBundle\Entity\InYourMindFriend, array given, called in /var/www/html/thinkroulette/vars/vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php on line 410 and defined 
我搜索了这个问题,得到了很多结果,但我没有能力解决这个问题

我试图将两个实体整合成一种形式,我从这篇文章中得到了我的想法

也许这是一个愚蠢的举动,但我甚至不能理解其中的错误(

在主要形式的剪断之后

//InYourMindType.php
    class InYourMindType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->add('thinkFriend', new InYourMindFriendType)
        //...
这是“嵌入式”表格:

调用主窗体的细枝(然后是嵌入窗体)


{{form_标签(t_form.title)}
{{form_小部件(t_form.title)}
{{form_errors(t_form.title)}
{{form_标签(t_form.thinkFriend.email)}
{{form_小部件(t_form.thinkFriend.email)}
{{form_errors(t_form.thinkFriend.email)}
这些形式分别属于通过多对一和一对多关系连接的两个不同实体

如果你需要我发布实体,请询问


非常感谢您为InYourMindFriendType设置数据类选项


签出

非常感谢!!这很有效,只是另一个问题。YourMindFriendType中第二个表单中的字段不是必填字段。如果我不填写任何数据,它会拉出一个错误,表示它不能为null。如果为null,它将不会保存到表中(与该实体相关):我该怎么做?:)你指的是YourMindFriendType中的“email”字段。如果是,您应该注意到选项'required'=>false仅禁用HTML5的'required'属性,如果它在'email'为null时抛出错误,那么您的实体声明中可能有一个必需的约束
//InYourMindDriendType  
class InYourMindFriendType extends AbstractType
    {
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->add('email', 'email', array(
                'label' => 'label_think_userEmail',
                'required' => false,
                'attr' => array(
                    'title' => 'label_think_userEmail',
                    'class' => 'form-control'
                )
            ));
        }
    public function getName()
    {
        return 'thinkFriend';
    }
<div class="form-group">
    {{ form_label(t_form.title) }}
    {{ form_widget(t_form.title) }}
    {{ form_errors(t_form.title) }}
</div>
<div class="form-group">
    {{ form_label(t_form.thinkFriend.email) }}
    {{ form_widget(t_form.thinkFriend.email) }}
    {{ form_errors(t_form.thinkFriend.email) }}