我正在创建一个表单类型来更新用户拥有的帐户的选项。
我有 3 个实体User
,UserHasAccount
并且Account
.
以下是它们之间的关系:
User
(OTM) <-> (MTO) UserHasAccount
(MTO) <-> (OTM)Account
在UserHasAccount
我有 2 个选项options1
和options2
(布尔值)
一个帐户可以链接到多个用户。我有一个页面,我希望能够更改Users
链接到此Account
( /account/{id}/manage-user
)的选项
这是第一个映射字段的表单类型User
class AccounUserOptionFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('user', 'entity', array(
'class' => 'AcmeUserBundle:User',
'property' => 'fullname',
))
->add('option1', 'checkbox', array(
'label' => 'account.form.option.one',
'required' => false,
'error_bubbling' => true,
))
->add('option2', 'checkbox', array(
'label' => 'account.form.option.two',
'required' => false,
'error_bubbling' => true,
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\UserBundle\Entity\UserHasAccount',
'translation_domain' => 'AcmeAccountBundle'
));
}
public function getName()
{
return 'acme_update_account_option_type';
}
}
AccountUserOption 表单类型:
class AccountUserOptionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// Display the collection of users
->add('accountUser', 'collection', array(
'type' => new AccountUserOptionFormType($options),
))
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\AccountBundle\Entity\Account',
'cascade_validation' => true,
'validation_groups' => array('AcmeUpdateOption'),
));
}
public function getName()
{
return 'acme_account_user_option_type';
}
}
我遇到的问题是:
->add('user', 'entity', array(
'class' => 'AcmeUserBundle:User',
'property' => 'fullname',
))
我只想显示(标签或类似的)用户名。使用实体正在显示一个下拉列表:/ 是否有任何我可以使用的核心字段类型或者我必须创建一个自定义类型?我会认为这可能是核心。
干杯,马克西姆