【问题标题】:Symfony Form handle one-to-many as one-to-oneSymfony Form 将一对多处理为一对一
【发布时间】:2016-02-07 15:14:52
【问题描述】:

在数据库中,contact 和 contactAddress 之间的关系是一对多的。

我想处理一个 symfony 表单而不是使用集合类型,因为它应该是一对一的用户。

$builder->add(
    'contactAddresses',
    new ContactAddressType()
);

出现以下错误:

既不是“contactAddresses”属性也不是其中一种方法 "addContactAddress()"/"removeContactAddress()", “setContactAddresses()”、“contactAddresses()”、“__set()”或“__call()” 在课堂上存在并具有公共访问权限 “我的\Bundle\ContactBundle\Entity\Contact”。

addContactAddress 方法存在于我的联系人实体中。

public function addContactAddress(ContactAddress $contactAddress)
{
    $this->contactAddresses[] = $contactAddress;

    return $this;
}

【问题讨论】:

    标签: php symfony symfony-forms


    【解决方案1】:

    试试这个:

    $builder
        ->add('contactAddresses','entity', array(
            'class'=>'yourBundle:ContactAddress',
            'property'=>'propertyToDisplay'
        ));
    

    【讨论】:

    • 实体是我需要渲染一个拥有字段的子表单类型的选择。
    【解决方案2】:

    确实通过使用 CollectionType 修复它并添加一个 $contactAddress 到它

    建造者:

    $builder->add(
        'contactAddresses',
        'collection', [
            'entity' => new ContactTypeAddress()
        ]
    );
    

    控制器:

    $contact = new Contact();
    $contact->addContactAddress(new ContactAddress()); // This line did fix my problem
    
    $this->createForm(new MyContactType(), $contact);
    

    【讨论】:

      【解决方案3】:

      你应该按如下方式添加它:

      $builder->add('contactAddresses',ContactAddressType()::class);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多