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

Jea*_*ean 4 forms hidden-field symfony

我在Symfony2项目中有一个" 评级 "实体的自定义表单类型.它有一个字段,即整数.然后,我为这个实体创建了表单.以下是代码:

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';
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在我的html页面中按下提交按钮时,表单未经过验证,并且屏幕上显示" 非整数 "错误消息!
为什么Symfony2不会将值113转换为整数?我该怎么做才能解决这个问题?

Sgo*_*kes 7

当使用类型hidden而不是integerFormType时,symfony不知道该字段会发生什么,因此它假设一个字符串.将表单绑定到实体时,隐藏字段将作为字符串存储到实体字段中.

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

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