1

ユーザーが持っているアカウントのオプションを更新するフォーム タイプを作成しています。

と の 3 つのエンティティUserUserHasAccountあり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',
))

ユーザーの名前を(ラベルなどに)表示したいだけです。エンティティを使用するとドロップダウンが表示されます:/ 使用できるコア フィールド タイプはありますか、それともカスタム フィールド タイプを作成する必要がありますか? これがコアになると思いました。

乾杯、マキシム

4

0 に答える 0