symfony - 如何从 symfony 2 Controller 中删除嵌入表单中的表单字段

标签 symfony symfony-forms symfony-2.3

我有一个表格如下:

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

我正在 Controller 中调用 AdminEmployerForm,并且我想从 AdminEmployerForm 中删除 AdminUserForm 的电子邮件字段:

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

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

最佳答案

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

$form = $this->createForm(new AdminEmployerForm, $employer);

// Get the embedded form...
$adminUserForm = $form->get('user');

// ... remove its email field.
$adminUserForm->remove('email');

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

关于symfony - 如何从 symfony 2 Controller 中删除嵌入表单中的表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26329148/

相关文章:

symfony - 如何从版本化的 Webpack Encore 构建中获取 CSS 作为字符串,以便在电子邮件中使用它?

php - 注册表单不会触发验证约束

php - 将日期时间字段拆分为两个字段的表单

php - 如果不传递 --ansi 则无法在 PHP CLI 中获取 ANSI 颜色

php - symfony2 Doctrine 删除对象数组

php - 使用 Symfony Process 组件进行 Ajax 轮询

php - Bootstrap 3 在 Symfony3 中不起作用

php - Symfony2 : How to change hidden field value on PRE_SUBMIT

symfony - 在 Symfony 中使整个表单只读

javascript - 访问 {{ }} symfony twig 内的 javascript 变量