【问题标题】:how to remove a form field in embedded forms from symfony 2 controller如何从 symfony 2 控制器中删除嵌入式表单中的表单域
【发布时间】:2014-10-12 19:34:03
【问题描述】:

我的表格如下:

class AdminEmployerForm extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('firstName', 'text')
            ->add('user', new AdminUserForm());
    }
}


class AdminUserForm extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder
            ->add('username', 'text')
            ->add('email', 'text');
    }
}

我在控制器中调用 AdminEmployerForm,我想从 AdminEmployerForm 中删除 AdminUserForm 的电子邮件字段:

$form = $this->createForm(new AdminEmployerForm, $employer);
//i want to do something like $form->remove('email')

如何使用 $form->remove() 删除嵌入表单中的字段?是否可以从控制器中删除嵌入表单的字段?

【问题讨论】:

    标签: symfony symfony-forms symfony-2.3


    【解决方案1】:

    您必须获取嵌入的表单类型才能从中删除字段。

    $form = $this->createForm(new AdminEmployerForm, $employer);
    
    // Get the embedded form...
    $adminUserForm = $form->get('user');
    
    // ... remove its email field.
    $adminUserForm->remove('email');
    

    不确定您的确切用例,但您可以考虑leveraging form events,因为它可能比在控制器中处理更理想。

    【讨论】:

    • 小事我相信你会很快弄清楚,但你必须删除$form->handleRequest($request)之前的字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多