【问题标题】:Fixing a symfony2.8 deprecation will affect my database修复 symfony2.8 弃用会影响我的数据库
【发布时间】:2016-06-12 09:37:44
【问题描述】:

我需要修复一个弃用;

“choice”的“choices_as_values”选项的值“false” 表单类型(Symfony\Component\Form\Extension\Core\Type\ChoiceType)是 自 2.8 版起已弃用,3.0 版将不再支持。 将此选项设置为“true”并翻转“选择”的内容 替代选项。

我完全了解如何解决此弃用问题,但是通过翻转我选择的内容会导致与我的数据库发生冲突。

例如;

我有一个带有传输字段的汽车表。在该字段中,总会有 a 或 m

在我的项目中,我有一个返回数组的函数;

public static function enumFootType()
{
    return array(
        'a' => 'Automatic',
        'm' => 'Manual'
    );
}

所以在我的表单中它将显示Automatic,但在我的数据库中它存储为a。因此,如果我要翻转所有内容,如弃用消息告诉我这样做,我的数据库中就会出现冲突。我应该如何解决这个问题?有人可以帮帮我吗?

我对 Symfony 等还是比较陌生,所以我希望你能理解我试图解释的内容。谢谢

【问题讨论】:

  • 你试过了吗?您需要做的就是翻转阵列,事情应该和以前一样工作。不需要choices_as_values 等。
  • @Cerad 我换了一个数组来测试它,这就是现在显示的错误; Key "0" for array with keys "no, yes" does not exist in src/FcConnectBundle/Resources/views/Consult/show.html.twig at line 502

标签: php symfony symfony-2.8


【解决方案1】:

您可以传递对象数组并使用标签获取器:

$builder->add('attending', ChoiceType::class, array(
    /** Type $types */
    'choices' => $types,
    'choices_as_values' => true,
    'choice_label' => 'getName',
    'choice_value' => 'getName'
));

【讨论】:

    【解决方案2】:

    在表单构建器中,添加属性'choices_as_values' => true 并在选项卡中切换键和值。它应该可以工作。

    更多信息:http://symfony.com/blog/new-in-symfony-2-7-choice-form-type-refactorization

    【讨论】:

    • 我说我知道如何解决它。我知道我必须添加该属性,并切换键和值。但是我的选择来自从数据库发送的实体的函数(如我的问题中所解释的)。所以如果我交换它们,从数据库中获取正确的信息会有问题
    猜你喜欢
    • 2017-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多