forms - Symfony2 - 为什么隐藏字段中的整数值不被识别为整数?

标签 forms symfony hidden-field

我的 Symfony2 项目中有一个“ Rating ”实体的自定义表单类型。它有一个 值(value) 字段,即整数。然后,我为这个实体创建了表单。下面是代码:

class RatingType extends AbstractType
{
  public function buildForm(FormBuilder $builder, array $options){
     $builder->add('value', 'hidden', array('data' => 113));
  }

  public function getDefaultOptions(array $options){
     return array(
         'data_class' => 'Acme\ArticleBundle\Entity\Rating',
     );
  }    

  public function getName() {
     return 'spesax_productbundle_pratingtype';
  }
}

当我按下 提交 在我的 html 页面中的按钮,表单未经过验证,屏幕上显示“ 不是整数 ”错误消息!
为什么 Symfony2 不转换值 113 为整数?
我能做些什么来解决这个问题?

最佳答案

当使用类型 hidden而不是 integer在您的 FormType 中,symfony 不知道该字段会发生什么,因此它假定一个字符串。将表单绑定(bind)到实体时,隐藏字段作为字符串存储到实体字段中。

如果您使用 type="integer" 进行验证,则验证实体会失败,因为该值不是整数,而是可以转换为整数的字符串(保存它会起作用,因为教义看起来是否可以转换为给定类型)。

诀窍是使用 type="numeric "在您的实体验证注释中。 这将检查字段是否可以转换为整数,而不是当前值是否为实整数。

关于forms - Symfony2 - 为什么隐藏字段中的整数值不被识别为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776746/

相关文章:

php - JQUERY 从 TXT 文件加载,在下拉列表中显示 VALUE,获取用户选择 - 需要逻辑和 JS 帮助

javascript - 占位符不更新选项值

javascript - 根据所选值传递隐藏输入

java - 如何将 String 值发送回 Spring MVC?

c# - 回调时未修改 ASP.NET 隐藏字段值

windows - Windows 窗体中的主窗体

javascript - 使用 JavaScript/jQuery 的批量表单控件

validation - Symfony2 在自定义验证器中获取安全上下文

php - 如何为我配置的货币使用 Sylius 货币导入器?

php - Symfony LiipImagineBundle : filters not working for big images