加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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对象.

我收到这个错误:

clone method called on non-object

我还可以检查$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对象.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读