【问题标题】:Form key => value inverted since symfony 3, is it possible to overwrite it ?自 symfony 3 以来,表单键 => 值反转,是否可以覆盖它?
【发布时间】:2019-05-11 03:48:20
【问题描述】:

从 Symfony3 开始,'choices' 形式的键 -> 值被翻转。我尝试将一个非常大的项目升级到 symfony3,我很难翻转所有关键值。

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

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

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

我必须把它倒过来

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

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

【问题讨论】:

    标签: symfony


    【解决方案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;
       },
    ));
    

    【讨论】:

    • 我想没有全局解决方案所以...我想我不会将choices_as_values 设置为false,因为它将在版本4 中被弃用。我将array_flip 动态数组和函数调用,如果它是静态的,我会手动更改。
    猜你喜欢
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多