自symfony 3起,form key => value反转,是否有可能覆盖它?

时间:2018-12-10 09:04:12

标签: symfony

自Symfony3起,“ choices”形式的键->值被翻转。我试图将一个非常大的项目升级到symfony3,这对我来说很难翻转所有关键值。

是否可以覆盖symfony表单的默认行为以使用旧方法?

例如,如果我有很多这样的代码

private static $MAP_MINUS = [
    self::GENTLEMAN => 'm.' ,
    self::MADAME => 'mme.',
];

我必须将其反转

private static $MAP_MINUS = [
    'm.' => self::GENTLEMAN ,
    'mme.' => self::MADAME,
];

但是我不想,因为项目中的数组太多了。

1 个答案:

答案 0 :(得分:1)

您可以手动将表单类的“ choices_as_values”选项设置为false。这仅在symfony4之前有效,因为该选项本身已被sf3弃用。 在弃用之前,他们将默认值切换为true,这就是现在翻转数组的原因。

$form->add('status', 'choice', array(
   'choices' => array(
       'Enabled' => Status::ENABLED,
       'Disabled' => Status::DISABLED,
       'Ignored' => Status::IGNORED,
   ),
   // choices_as_values defaults to true in Symfony 3.0
   // and setting it to anything else is deprecated as of 3.0
   'choices_as_values' => true,
   // important if you rely on your option value attribute (e.g. for JavaScript)
   // this will keep the same functionality as before
   'choice_value' => function ($choice) {
       return $choice;
   },
));