ユーザーが持っているアカウントのオプションを更新するフォーム タイプを作成しています。
と の 3 つのエンティティUser
がUserHasAccount
ありAccount
ます。
それらの間の関係は次のとおりです。
User
(OTM) <-> (MTO) UserHasAccount
(MTO) <-> (OTM)Account
私にUserHasAccount
は2つのオプションがoptions1
あり、options2
(ブール値)
アカウントは複数のユーザーにリンクできます。Users
これにリンクされているforeach のオプションを変更できるようにしたいページがあります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',
))
ユーザーの名前を(ラベルなどに)表示したいだけです。エンティティを使用するとドロップダウンが表示されます:/ 使用できるコア フィールド タイプはありますか、それともカスタム フィールド タイプを作成する必要がありますか? これがコアになると思いました。
乾杯、マキシム