【问题标题】:how change value and label of choice in collection form field type?如何更改集合表单字段类型中选择的值和标签?
【发布时间】:2015-01-21 18:39:00
【问题描述】:

我有这样的集合字段类型:

$defaultData = array('attendances' => array('5', '4'));
    $form = $this->createFormBuilder($defaultData)
        ->add('choice', 'text')

        ->add('email', 'email')
        ->add('message', 'textarea')
        ->add('attendances', 'collection', array(
            'type'  => 'choice',

            'options'  => array(

                'choices'   => array('1' => 'حاضر', '0' => 'غایب'),
            ),
        ))
        ->add('send', 'submit')
        ->getForm();

我得到的是这样的:

查看选择的标签是什么(0 和 1)以及它们的输入名称属性,我想要更改标签和输入名称 attr 那么我该如何更改 $defaultData 呢?

【问题讨论】:

    标签: php symfony symfony-forms


    【解决方案1】:

    好的,您可以使用 dataattribute 作为数组来执行此操作,您可以阅读有关它的更多信息 here

    代码示例:

    $defaultData = array('attendances' => 
       array('key' => '5', 'key2' => '4')
    );
    $form = $this->createFormBuilder($defaultData)
        ->add('choice', 'text')
        ->add('email', 'email')
        ->add('message', 'textarea')
        ->add('attendances', 'collection', array(
                'type'  => 'choice',
    
                'options'  => array(
    
                    'choices'   => array('1' => 'حاضر', '0' => 'غایب'),
                ),
                'data' => $defaultData['attendances']
            ))
        ->add('send', 'submit')
        ->getForm();
    

    结果:

    name="form[attendances][key]"
    name="form[attendances][key2]"
    

    并标记keykey2

    【讨论】:

    • 谢谢,它工作正常,但知道如何为每个选项设置不同的标签和名称索引吗?
    【解决方案2】:

    我建议如果你要创建一个选择,你直接使用'choice' 类型:

    ->add('attendances', 'choice', array(
                        'choices' => array('1' => 'حاضر', '0' => 'غایب'),))
    

    希望对你有帮助。

    更新

    您可以使用预定义的数组来填充选项。您还可以使用data 属性设置默认值。

    $defaultData = array('attendances' => array('5' => 'One option', '4' => 'Another option'));
    
    ...
    ->add('attendances', 'choice', array(
                            'choices' => $defaultData["attendances"],
                            'data' => '5',))// just in case you want a preselected choice, in this case, key 5 will appear selected by default.
    ...
    

    【讨论】:

    • 感谢您的回答,但我已经说了大约 30 项这种选择类型
    • 是否可以预先生成数组并将其传递给选择字段?
    • 你的意思是 $defaultData 数组吗?是的
    • @mohsenkw 你试过将$defaultdata 传递给choices吗?
    • 是的,看第二行我把它传递给 createFormBuilder()
    猜你喜欢
    • 2014-10-21
    • 1970-01-01
    • 2012-08-12
    • 2016-02-14
    • 2018-12-12
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多