【问题标题】:Validation error on "baked" date field , CakePHP 3“烘焙”日期字段的验证错误,CakePHP 3
【发布时间】:2015-01-08 17:01:56
【问题描述】:

我有一个“烘焙”的 cakePHP-3.0.0 页面,其字段定义为

date_of_birth date DEFAULT NULL

在表中users

当我点击 add 函数的提交时,我得到了

警告(2):preg_match() 期望参数 2 为字符串,数组给定 [CORE\src\Validation\Validation.php,第 763 行]

代码上下文

 protected static function _check($check, $regex)  
 {  


      if (is_string($regex) && preg_match($regex, $check)) {  



          $check = [  
             'year' => '2014',  
             'month' => '01',  
             'day' => '01'  
         ]  
         $regex = '%^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|    [2468][048]|[3579][26])00)))([- /.])(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?    \d{2})([- /.])(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])    \2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$%'

关于如何修复的任何建议?
堆栈跟踪是

preg_match - [internal], line ??    
Cake\Validation\Validation::_check() - CORE\src\Validation\Validation.php, line 763  
Cake\Validation\Validation::date() - CORE\src\Validation\Validation.php, line 346  
Cake\Validation\RulesProvider::__call() - CORE\src\Validation\RulesProvider.php, line 53  
Cake\Validation\RulesProvider::date() - CORE\src\Validation\ValidationRule.php, line 138  
Cake\Validation\ValidationRule::process() - CORE\src\Validation\ValidationRule.php, line 138  
Cake\Validation\Validator::_processRules() - CORE\src\Validation\Validator.php, line 554  
Cake\Validation\Validator::errors() - CORE\src\Validation\Validator.php, line 128  
Cake\ORM\Marshaller::_validate() - CORE\src\ORM\Marshaller.php, line 185  
Cake\ORM\Marshaller::merge() - CORE\src\ORM\Marshaller.php, line 341  
Cake\ORM\Table::patchEntity() - CORE\src\ORM\Table.php, line 1899  
App\Controller\UsersController::add() - APP/Controller\UsersController.php, line 48  
Cake\Controller\Controller::invokeAction() - CORE\src\Controller\Controller.php, line 406  
Cake\Routing\Dispatcher::_invoke() - CORE\src\Routing\Dispatcher.php, line 114  
Cake\Routing\Dispatcher::dispatch() - CORE\src\Routing\Dispatcher.php, line 87   

【问题讨论】:

  • 您能否删除这些 cmets 并更新您的问题?另外,请发布已出炉的验证规则。
  • “应用程序”完全是通过“cake bake all tablename”生成的,特定的表字段是“date-of-birth date DEFAULT NULL”。我不知道有任何验证规则已经出炉。
  • 当我尝试通过编辑进行更新时,生成的表单中的“datetime DEFAULT NULL”变量也会出现非常类似的错误。 "期望参数 2 为字符串,给定数组".

标签: validation cakephp error-handling cakephp-3.0


【解决方案1】:

请阅读答案 https://github.com/cakephp/cakephp/issues/5611#issuecomment-69254634

问题已解决,请使用“composer update”更新你的 cakephp 版本。

请注意,在标记新版本之前,您必须在 composer 中使用 dev-master

【讨论】:

    猜你喜欢
    • 2014-04-21
    • 2015-12-28
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多