php – Symfony验证
发布时间:2020-12-13 18:01:29 所属栏目:PHP教程 来源:网络整理
导读:我在一个捆绑工作,用户使用表单创建一个“comision”,我试图检查用户是否还有“信用”.所以我创建了一个自定义验证器,用于查询过去的命令,如果信用不足则会抛出错误. 我的问题是,如果用户在“日期”字段中提交了一个格式错误的日期(即32-13-20122 24:05),Sym
我在一个捆绑工作,用户使用表单创建一个“comision”,我试图检查用户是否还有“信用”.所以我创建了一个自定义验证器,用于查询过去的命令,如果信用不足则会抛出错误.
我的问题是,如果用户在“日期”字段中提交了一个格式错误的日期(即32-13-20122 24:05),Symfony仍会尝试运行我的自定义验证,我会得到各种错误(因为$comision – > getDate()为null且不是有效的DateTime对象. 我收到这个错误:
我还可以检查$comision-> getDate()的值是否是我的自定义验证器中的有效日期时间,但在我看来它应该没有必要,因为我在date属性中添加了这个规则. 这是我的实体(简化) /** * @MyValidationTotalHours() */ class Comision { /** * @ORMColumn(type="datetime") * @AssertDateTime() * @AssertNotNull() */ protected $date; /** * @ORMColumn(type="decimal",nullable=false,scale=1) * @AssertNotBlank() */ protected $hours; ... 我的表格班…… class NewComisionType extends AbstractType { public function buildForm(FormBuilderInterface $builder,array $options) { $builder ->add('date',DateTimeType::class,array( 'widget' => 'single_text','label' => 'Starting date and time','format' => 'dd/MM/yyyy HH:mm' )) ->add('hours',ChoiceType::class,array( 'label'=> 'How many hours','choices' => array( '1:00' => 1,'1:30' => 1.5,'2:00' => 2,'2:30' => 2.5,'3:00' => 3 ) )) ... 我的cutom验证器检查过去的命令,以确定用户是否还有“信用” public function validate($comision,Constraint $constraint) { $from = clone $comision->getDate(); $from->modify('first day of this month'); $to = clone $comision->getDate(); $to->modify('last day of this month'); $credit = $this->em->getRepository("ComisionsBundle:Comision")->comisionsByDate($comision,$from,$to); ...
一种方法是按照
docs中的描述对约束进行分组.
这样您就可以定义两组约束,而第二组只有在第一组中的所有约束都有效时才会被验证. 关于您的用例,您可以将自定义约束放在与默认约束不同的组中,以确保您具有正确的$comision DateTime对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |