php Symfony选择类型数组错误:无法转换属性路径的值:应为数组

snz8szmq  于 2023-02-07  发布在  PHP
关注(0)|答案(4)|浏览(125)

为什么我得到一个错误与此形式的选择设置为多个。这是直接来自symfonys网站。所有我改变的是变量名。

$builder->add('genre', 'choice', array(
    'choices' => array(
        'x'   => 'x',
        'y' => 'y',
        'z'   => 'z',
    ),
    'multiple' => true,
));

这是错误:
无法转换属性路径"genre"的值:应为数组。
下面是这个变量的实体类:

/**
 * @var string
 *
 * @ORM\Column(name="genre", type="text", nullable=true)
 */
private $genre;
mcvgt66p

mcvgt66p1#

我可以确认qooplmao的评论解决了这个问题:
问题是您的实体字段$genre没有定义为array,而是定义为string
但是当启用多个选项时,表单字段将提供array作为结果,而不是字符串。
因此,您可以:

  • genreMap为array而不是string
  • 或通过将multiple设置为false禁用多个选项

在这个特定的问题中,我猜您希望将genreMap为array

g9icjywg

g9icjywg2#

我的解决方案绕过错误,只是使用此代码.

explode("|",$response['quest1'])

用爆炸来解决你的问题
即时使用|您可以更换的分离器|通过,
下的示例代码

$builder->add('genre', 'choice', array(
'choices' => array(
    'x'   => 'x',
    'y' => 'y',
    'z'   => 'z',
),
  'multiple' => true,
   explode("|",$response['genre']),
));
bfnvny8b

bfnvny8b3#

我用“数据”选项解决问题

->add('flags', ChoiceType::class, [
        'choices' => [Agent::FLAGS],
        'expanded' => true,
        'multiple' => true,
        'required' => false,
        'data' => Agent::FLAGS,
    ])

我使用的是按位标记,所以数据库类型是int,屏幕信息是一个有很多复选框的复选框。
使用“数据”,我可以对Symfony说我将使用什么类型的数据,一切都正常。

mmvthczy

mmvthczy4#

公共函数getGenre():数组{...

相关问题