如何处理选择领域的多选 - Symfony 2

时间:2016-01-31 15:08:26

标签: forms symfony

情况:我已经在我的某个表单中获得了以下代码:

        $builder->add('Type', 'choice', array
        (
            'label' => 'Enter body types',
            'choices' => array('Sedan'=>'Sedan','Wagon'=>'Wagon',...),
            'multiple' => true,
        ))

问题:当用户选择多个值(例如Sedan和Wagon)时,异常'数组转换为字符串'因为显而易见的原因而被抛出。

问题:有没有办法添加一些表单选项,可以处理数组到字符串的转换?我的意思是类似于这个:

        'someOption' => function ($selectedArray)
        {
           $returnString = "";
           for ($selectedArray as $singleValue){ $returnString = $returnString . ",". $singleValue }
           return $returnString;
        }

1 个答案:

答案 0 :(得分:3)

问题在于,您的字段Type是一个字符串,并且在您的表单中,您允许使用多个值。

当表单处理多个可选字段时,您不是使用简单值而是使用值数组。当您在实体字段中设置此数组并尝试将此实体保存在数据库中,并且因为您的字段设计为简单字符串时,php将尝试获取值的字符串版本...就像:(字符串)array(),这在PHP中是不可行的:)

您可以将值定义为Array,或者应禁用此多重选择:)

注意:

  

如果您需要选择多个数组,您的表单应该处理数组   值。你的实体应该用数组映射处理这个(就像我一样)   SAID)。