douhan0562 2019-04-07 15:28
浏览 66

如何在子对象上添加Respect Validation,它是Optional

In Slim3 framework's Respect Validation, I am trying to add validation on child object.

$childObjValidationArr = array(
  'param1' => v::regex("/^[A-Za-z0-9]{1}[A-Za-z0-9.$#-@]{1,19}$/"),
  'param2' => v::date('Y-m-d'),
  'param3' => v::intVal()->not(v::negative())
);

It works fine if child object is not optional.

$mainObjectValidators = array(
  'id' => $intPositive,
  'childObj' => $childObjValidationArr
);

But not working when child is optional (null allowed).

$mainObjectValidators = array(
  'id' => $intPositive,
  'childObj' => v::optional($childObjValidationArr)
);

Any way to add optional validation for child object with Respect?

Below is the error when attempted above

PHP Fatal error: Uncaught TypeError: Argument 1 passed to Respect\Validation\Rules\Optional::__construct() must implement interface Respect\Validation\Validatable, null given

  • 写回答

1条回答 默认 最新

  • doulai1910 2019-04-10 02:00
    关注

    I have tried below

    $childObjectValidator = v::when(v::notOptional(), 
    v::attribute('pCode', $codeRegex)
    ->attribute('pDate', v::date('Y-m-d'))
    ->attribute('pId', $intPositiveZeroAllowed));
    

    But then KeySet worked for me when combined it with when

    $pValidator = v::keySet(
      v::key('pCode', $codeRegex),
      v::key('pDate, v::date('Y-m-d')),
      v::key('pId', $intPositiveZeroAllowed)
    );
    
    $childObjectValidator = v::when(v::notOptional(), $pValidator, v::nullType());
    

    and main validator looks like below

    $mainObjectValidators = array(
      'id' => $intPositive,
      'childObj' => $childObjectValidator
    );
    
    评论

报告相同问题?

悬赏问题

  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输