【问题标题】:Symfony3 FormBuilder with associative array带有关联数组的 Symfony3 FormBuilder
【发布时间】:2018-07-12 00:12:49
【问题描述】:

提前,对不起我的英语......

我的 symfony 表单有问题,看起来很简单,但我不明白该怎么做。

我有一个用户类,它有一个参数“salaries”。这是一个包含 id、标签和金额的对象“salary”的数组。

当我添加一个用户时,我想填写我的对象“薪水”。我希望每个薪水实例都有一个带有标签(在我的对象薪水中)和输入金额的小部件。

我尝试使用 collectionType,但它似乎不起作用。 我试图在我的对象用户中为每个薪水创建一个字段,但我无法动态创建 setter 和 getter。

仅供参考,我不使用 Doctrine。

如果不清楚,我可以用法语解释,会更好...

这是我的 userType.php :

$builder
->add('name', TextType::class, array('label'=>'Name : '))
->add('lastname', TextType::class, array('label'=>'Lastname : '))
->add('salaries', CollectionType::class, array('entry_type' => salaryType::class));

我的salaryType.php:

public function buildForm(FormBuilderInterface $builder, array $options){

        $builder->add('amount', TextType::class, array('label'=> $builder->getData()->getLabel(), 'required' => false));
        $builder->getForm();
}

还有我的树枝:

<div id="infos">
    <div class="title">Salary</div>
        <div>
        {% for salary in formUser.salaries %}
            <div><span>{{ form_label(salary.label) }}</span><span>{{ form_widget(salary.amount) }}</span></div>
        {% endfor %}
        </div>
</div>

【问题讨论】:

    标签: php forms symfony collections symfony-3.4


    【解决方案1】:

    在你的用户类型中替换这个

       ->add('salaries', CollectionType::class, array('entry_type' => 
     salaryType::class));
    

    $builder->add('salaries', EntityType::class, [
                        'class' => 'NameBundle:salary',
                        'empty_value' => 'Choise a Salary',
                        'label' => 'Salary',
                        'required' => false,
                        'query_builder' => function (SalaryRepository $er){
                            return $er->findAll();
                        }
                    ]);
    

    【讨论】:

    • 感谢您的回答,但不幸的是我不使用 Doctrine ......所以您的方法无法匹配
    猜你喜欢
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多