gpt4 book ai didi

forms - 针对数组 Symfony2 验证选择字段

转载 作者:行者123 更新时间:2023-12-03 22:22:26 26 4
gpt4 key购买 nike

我正在 Symfony2 中构建一个表单类。在我的课上,我有一个选择字段。我构建了一个函数来返回我选择的数组:

public function getCardTypes()  {
return array('visa' => 'Visa', 'mc' => 'MasterCard', 'amex' => 'American Express');
}

稍后,我使用这个数组向我的表单添加一个选择字段:

$builder->add('PaymentCCType', 'choice', array('choices' => $this->getCardTypes()));

然后在 getDefaultOptions 函数中我对该字段有一个选择约束:

'PaymentCCType' => new Choice(array('choices' => $this->getCardTypes())),

我似乎对这个验证器有问题。当我提交此表单时,我的选择框下方出现以下错误:“您选择的值不是有效的选择”。当然,我正在使用数组中的选项之一。

我做错了什么?

/* 编辑 */

我注意到在我拥有的 4 个这样的字段中,我只在其中的 3 个字段中遇到错误。选择月份(简单的 1-12)的那个,验证有效。

/* 编辑 2 */

当数组键与值不匹配时,就会出现问题。我将数组切换为 array('Visa' => 'Visa', 'MasterCard' => 'MasterCard', 'American Express' => 'American Express') 现在它可以工作了。有没有办法解决?我觉得我不能是唯一遇到这个问题的人。即使您有像 array('Visa', 'MasterCard', 'American Express')

这样的常规(非关联)数组,它也会发生

最佳答案

恕我直言,您应该以不同的方式进行操作,使用 ChoiceListInterface 创建类,方法如下:

public function getChoices() 
{
return self::$choices;
}

public static function getTypeChoicesKeys()
{
return array_keys(self::$choices);
}

在表单类中:

$builder->add('type', 'choice', 
array(
'expanded' => true,
'multiple' => false,
'choice_list' => new TypeChoices(),
'required' => true,
)
)

在 validation.yml 中

    type:
- NotNull: ~
- Choice: { callback: [TypeChoices, getTypeChoicesKeys] }

关于forms - 针对数组 Symfony2 验证选择字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11380751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com