我正在使用FOSUserBundle,并在注册新用户时扩展了注册表以输入公司名称。Company
是一个单独的实体。我为关系处理创建了所有必需的方法。
/**
* User entity
*/
class User {
// ...
addCompany() { /* ... */ }
removeCompany() { /* ... */ }
getCompanies() { /* ... */ }
}
class RegistrationFormType extends \FOS\UserBundle\Form\Type\RegistrationFormType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('...')
->add('company', new CompanyType());
}
// ...
}
注册表正确呈现;它显示了公司名称的字段。但是当我提交时,我得到
属性“company”和方法“setCompany()”、“_ set()”或“ _call()”都不存在,并且在类“Acme\MyBundle\Entity\User”中具有公共访问权限。
我显然既没有company
属性也没有setCompany()
方法,因为它是多对多关系,因此我有一个companies
属性和一个addCompany()
方法。
问题
- 为什么 Symfony 也不寻找
addCompany()
方法? - 我应该实现一个
setCompany()
方法(例如通过简单地重命名,或者作为调用的包装方法addCompany()
)? - 或者这是由于 Symfony 无法正确解释单数和复数方法名称时出现的单数/复数问题?