【问题标题】:How to handle multi-selection in choice field - Symfony 2如何在选择字段中处理多选 - Symfony 2
【发布时间】:2016-02-01 02:39:44
【问题描述】:

情况:我的一种形式有以下代码:

        $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;
        }

【问题讨论】:

  • 您的实体是如何设计的?我的意思是包含属性 $type 的实体。

标签: forms symfony


【解决方案1】:

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

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

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

注意:

如果您需要选择多个,您的表单应该处理数组 价值观。您的实体应该使用数组映射来处理这个问题(正如我 说)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2015-06-12
    • 2014-01-03
    • 1970-01-01
    相关资源
    最近更新 更多