php - 错误:您选择的值不是有效的选择
问题描述
目前,我正在更新在现有 Symfony 2.3(当前为 3.0.9)上运行的系统,并且正在验证操作。我想将Form中选择的数据保存在数据库中,但是一些使用ChoiceType的数据由于以下原因无法保存The value you selected is not a valid choice.
传过来的数据好像和更新到DB前的系统一样,但是好像被拒绝了。
似乎与错误有关的一件事是我替换了 services.yml 中参数中的数字和单词。
这是因为页面上显示的是一个数字,尽管这个词应该显示出来。你能给我一些建议吗?
错误
shop_keepRequestMinRank => The value you selected is not a valid choice.
shop_prefId => The value you selected is not a valid choice.
代码 ShopController.php
if ($request-> isMethod('PUT')){
if ($form->handleRequest($request)->isValid()){
// save save
$this->get("admin.shopService")->save($shop);
$this->get('session')->getFlashBag()->add('success','Saved shop profile.');
return $this->redirect($this->generateUrl ('ahi_sp_admin_shop_shop_edit'));
} else {
$this->get('session')->getFlashBag()->add('error','Could not save shop profile. Please check your entries.');
}
}
}
服务.yml
parameters:
#member rank
amc_member_rank:
"White": 0
"Navy": 1
"Orange": 2
"Silver": 3
"Black": 4
prefectures:
"Hokkaido": 1
"Aomiriken": 2
参数.php
/ **
* Get the prefecture's
*
* @return array Prefectures
* /
public static function getPrefectures()
{
return self::$container->getParameter("prefectures");
}
/ **
* Get the key of the prefecture
*
* @return array Prefectural key
* /
public static function getPrefecturesKeys ()
{
return array_keys(self::getPrefectures());
}
/ **
* Get AMC membership rank
*
* @return array AMC member rank
* /
public static function getAmcMemberRank()
{
return self::$container->getParameter("amc_member_rank");
}
/ **
* Get a key for membership rank
*
* @return array member rank key
* /
public static function getAmcMemberRankKeys()
{
return array_keys(self::getAmcMemberRank());
}
ShopType.php
// Prefectures
$builder->add("prefId", ChoiceType::class, array(
"required"=>true,
"choices"=>Parameters::getParameter("prefectures"),
));
// The lowest rank that can be reserved
$builder->add("keepRequestMinRank", ChoiceType::class, array(
'choices'=>Parameters::getParameter('amc_member_rank'),
'expanded'=>false,
'required'=>true,
));
版本 Cent OS 6.7 PHP 5.6 Symfony3.0.9
解决方案
在 Symfony 2.7 中,他们添加了choices_as_values 选项,因为现在提供给 ChoiceType 的数据是反向的(带有值的键)
为了向后兼容,您必须将choices_as_values 设置为false。从长远来看,您必须反转 ChoiceType 值的所有数据数组。
请参阅https://symfony.com/doc/2.7/reference/forms/types/choice.html#choices-as-values
额外建议:升级主要版本时,请从新版本中读取 UPGRADE.md 文件并检查重大更改 (BC)。此外,您应该首先升级到 symfony 2.8,因为这是一个专门用于从 symfony 2 过渡到 3 的版本,并首先修复所有弃用警告。
推荐阅读
- php - Mysqli_query 查看所有用户的最后一张图片
- linux - 最近 2 天内修改的 tar 文件
- sql-server - SQL SERVER:带输出的存储过程
- docker - 可以使用 docker:18 构建 docker 映像并使用不同的 docker:19 加载映像吗?
- elixir - Elixir和字符串中的多个替换字符
- android - 找不到脚手架小部件:打开底部对话框表时出现异常
- php - 以索引命名的交叉引用数组元素 - PHP/Laravel/Lumen
- c++ - C ++,Qt:双击后仅编辑qtablewidgetitem
- prism - Prism WPF Ioc 如何解决 MainWindow
- javascript - Mongoose 创建新文档重复键的可能性?