我正在处理包含用户数据,特别是电话号码字段的表单.通常不需要电话号码,因此模型中唯一的验证规则是usphone规则.但是,如果用户正在提交此表格,则电话号码变得必不可少.我以为我可以在运行中简单地添加验证规则,设置模型并调用validates方法,但是我做错了或者没有按我预期的方式工作.

在我的控制器中:

# Update a few validation rules that are specific to this context

$this->Proposal->Requestor->validate['phone_number']['notempty'] = array(

'rule' => 'notEmpty',

'message' => 'Please enter a phone number so can can contact you with any questions about the work.',

'allowEmpty' => false,

'required' => true,

);

$validationErrors = array();

$this->Proposal->Requestor->set( $this->data['Requestor'] ); # $this->data['Requestor']['phone_number'] only (no other requestor data)

if( !$this->Proposal->Requestor->validates( array( 'fieldList' => array( 'phone_number' ) ) ) ) {

$validationErrors['Requestor'] = $this->Proposal->Requestor->validationErrors;

}

即使我将电话号码字段留空,也不会报告任何错误.在这种情况下,我向用户请求的唯一信息是他们的电话号码,因此其余的请求者数据为空,但是我尝试合并其余的用户数据,但得到的结果相同.如果删除fieldList选项,则会在其他字段上收到错误消息,但空电话号码上仍然没有任何提示.

知道我在这里缺少什么吗?我已经忙了好几个小时了,只是找不到正确的答案.

谢谢.

解决方法:

解决方案最终是双重的:

>我在phone_number字段上已有规则,将值强制为美国电话号码.该规则还将allowEmpty设置为true,并且将false设置为false.我想捕获一个空值,以便显示特别精确的消息.

>我必须更新现有规则以翻转allowEmpty和必需值,还必须添加一个新规则,其最后一个值设置为true.

添加到我的控制器操作中的最终更改如下所示:

$this->Proposal->Requestor->validate = Set::merge(

$this->Proposal->Requestor->validate,

array(

'phone_number' => array(

'notempty' => array(

'rule' => 'notEmpty',

'message' => 'Please enter a phone number so can can contact you with any questions about the work.',

'allowEmpty' => false,

'required' => true,

'last' => true,

),

'usphone' => array(

'allowEmpty' => false,

'required' => true,

),

)

)

);

我不记得我是否验证过,鉴于新规则的最后一个值,对现有的usphone规则进行更改绝对是必要的,但是这种组合可以正常工作.

标签:cakephp-1-3,cakephp,php

来源: https://codeday.me/bug/20191202/2086533.html

PHP动态验证,php-动态更改验证规则相关推荐

  1. Day239.RBAC模式、动态加载用户权限资源规则数据规则、【记住我】注销多次登录图片验证码session验证码验证功能 -springsecurity-jwt-oauth2

    1.RBAC权限管理模型 一.RBAC权限模型简介 RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制.模型中有几个关键的术语: 用户:系统接口及功能访问的操 ...

  2. Mac堡垒机密码加身份验证器动态口令全自动登录(带全局登录命令)

    公司堡垒机采用密码+身份认证器双重验证登录,每次登录都需要找手机或者浏览器上的谷歌身份验证器插件看动态码,特别不方便,折腾半天实现了mac上自动登录功能,记录一下. 需求描述: 实现免密登录 实现身份 ...

  3. php通过谷歌身份验证实现动态口令

    Google Authenticator,是谷歌推出的一款动态口令工具,解决大家的google账户遭到恶意攻击的问题:许多安全性比较高的网站都会采用这种工具来验证登录或者交易:这个动态口令就是Goog ...

  4. 瑞数动态安全 - 零补丁、零规则 主动抵御未知零日攻击

    越来越泛滥的零日攻击 在大多数网络安全从业者意识中,"零日攻击"往往是让人非常头痛的安全威胁.其高威胁性.突发性.高破坏性.大规模性的主要特点,让零日攻击能在网络安全地下黑市历时十 ...

  5. php 动态网格,php-动态更改引导网格方向(从ltr到rtl或reverese)

    我们正在制作一个可以同时使用Rtl和Ltr(En和Fa)的站点. 我们要使用高音引导程序(3. *). 我们的mvc是基于php制作的. 如果站点语言为fa,是否可以使用网格流顺序为Rtl的引导程序, ...

  6. 网络访问:本地账号的共享和安全模式设置身份验证后自动更改其他验证的处理方法 ...

    网络访问:本地账号的共享和安全模式 设置成为"仅来宾-本地用户以来宾身份验证"后自动更改成"经典:本地用户以自己的身份验证"的处理方法 我们为何要修改网络访问: ...

  7. SLCP验厂辅导,SLCP验证员必须遵守验证协议中的验证规则以确保数据的质量和完整性

    SLCP(Social&LaborConvergenceProject)是社会劳工整合项目的简称,该项目致力于通过创立和实施一个简单.统一和有效的行业范围的社会与劳工数据收集的融合评估框架(C ...

  8. Gin验证请求参数-自定义验证规则

    Gin对请求参数自定义验证规则可以分三步: 自定义结构体验证绑定binding标签 针对该标签定义验证方法 再将该验证方法注册到validator验证器里面 自定义结构体验证绑定binding标签 需 ...

  9. .net验证身份证号是否符合规则

    验证身份证号是否符合规则,比较实用,错判率我自己测试为0,挺好用的,欢迎大神补充. protected bool checkidcard(string idcard){//验证18位或者17位加大小写 ...

最新文章

  1. 解决sql2014的distribution系统库distribution.mdf过大问题
  2. 网站快照更新不及时要怎样解决?
  3. BottomNavigationView处理只有2个tab的情况
  4. autocad型源代码_C# 实现预览dwg文件完整源代码(无需autocad环境)
  5. 往届选手心得分享:腾讯广告算法大赛萌新指南
  6. java swarm_java for swarm 学习笔记4
  7. linux otl oracle数据库连接例子
  8. 科技文献检索与计算机应用试卷,科技文献检索期末上机考试试题
  9. GPS经纬度一直不会改变的解决方法
  10. 博图注册表删除方法_回收站删除的文件怎么恢复?手把手教你找回
  11. java 文件夹排序_Java 文件夹遍历与排序
  12. 定时轮播Echarts造成内存泄漏致使浏览器崩溃问题
  13. Jetson TX2刷机(Jetpack4.2.0)
  14. HTML5基础标签有哪些,HTML5基础标签
  15. java背单词软件_一个JAVA写的背单词程序
  16. 【久远讲算法】队列——先进先出的数据结构
  17. 计算机网络基础知识--TCP/IP协议、IP分组、TCP传输
  18. matlab与数字图像处理--图像锐化imsharpen
  19. 人工神经网络ANN建模基础须知
  20. 公司常见管理系统介绍(非原创)

热门文章

  1. linux 双mipi摄像头,VS-RK3399 在linux系统下面调试Mipi camera接口介绍
  2. Linux命令行显示无效的命令,LINUX 命令ifconfig 无效
  3. MediaPlayer 播放视频的方法
  4. 字符数组和strcpy
  5. 《软件测试》第五次作业
  6. Chapter 14 Exercises Problems
  7. 内存淘汰机制 LRU cache
  8. linux dump_stack
  9. 高通8X25Q wifi BT 调试文档
  10. cesium 页面截图_Cesium开发入门篇 | 02开发环境搭建及第一个示例