Symfony表单类型显示ManyToOne实体信息

时间:2013-09-30 04:25:46

标签: php symfony-forms symfony-2.3

我正在创建一个表单类型来更新用户拥有的帐户选项。

我有3个实体UserUserHasAccountAccount

以下是他们之间的关系:

User(OTM)< - > (MTO)UserHasAccount(MTO)< - > (OTM)Account

UserHasAccount我有两个选项options1options2(布尔值)

帐户可以链接到多个用户。我有一个页面,我希望能够更改链接到Users Account的{​​{1}}的选项

以下是映射/account/{id}/manage-user

字段的第一种表单类型
User

AccountUserOption表单类型:

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';
    }
}

我遇到的问题是:

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';
    }
}

我只想显示(标签或类似)用户名。使用实体显示下拉列表:/我可以使用任何核心字段类型,还是必须创建自定义字段?我认为这可能是核心。

干杯, 马克西姆

0 个答案:

没有答案