云客Drupal源码分析之数据验证Validation

各位《云客drupal源码分析》系列的读者:
本系列一直以每周一篇的速度进行博客原创更新,希望帮助大家理解drupal底层原理,并缩短学习时间,但自《插件系统(上)》主题开始博客仅发布前言和目录,这是因为云客在思考一个问题:drupal在国外如此流行但在国内却很小众,一个重要原因应该是中文资料的缺乏,我们是否能够找到一种方式来激发中文资料的出产?此时同是积极推动者的晴空提出能否用付费阅读的方式来鼓励更多作者?并建立了一个付费阅读drupal资料的网站,个人觉得也许这能激发高质量原创内容的出产,学习者支付很少费用可以节省大量学习时间是划算的,作者也能分配精力去开发高质量内容而得到报酬,drupal普及开了对大家都有益处,为了支持晴空的这个项目,云客决定将从《插件系统(上)》主题开始后续内容全部放在这个网站上收费阅读,读者只需要付很少费用即可,云客在这里承诺该系列得到的所有订阅费用全部捐献给drupal深圳社区,用以组织活动等等,发展社区需要大家贡献力量,该网站已于2017年3月29日上线,请移步:http://nowicode.com/ 阅读本篇完整版

我是云客,【云游天下,做客四方】,联系方式见主页,欢迎转载,但须注明出处

****************************************以下为前言和目录,请移步:http://nowicode.com/ 阅读本篇完整版*******************************

 

 

前言:

drupal8的验证组件是基于symfony验证器组件的,为此本系列专门写了篇教程来独立介绍symfony的验证器validator,在看本篇前务必先阅读那篇教程,目前drupal8使用的symfony/validator为2.8版本,该教程以3.2版本做介绍,但不必担心,2.8版本和3.2版本相比变化不大,基本相同,为向前考虑作此安排,排除了许多弃用功能对学习者的影响,该教程可算是本篇的上篇,本篇不再对基本概念做介绍,仅介绍drupal8对symfony验证器validator的改动和运用。

 

drupal8验证器概述:

   如果你认真学习了symfony验证器,了解了它所有的运行细节,那么回过头来看drupal8验证器会觉得异常轻松,因为D8验证器是基于symfony/validator的,但却删减了许多的内容,复杂度大大降低,symfony作为框架理应考虑到可能的各种需求,所以提供的非常全面,但drupal作为具体的应用方,只会根据自己具体的需要来使用,对于删减也就不足为奇了,在drupal8自己的验证器组件中没有了级联、遍历、验证组、对象初始化这些概念,被验证的对象往往是类型化数据,约束也不是靠加载器从配置源中加载,而是使用drupal的插件机制寻找定义在类型化数据上面的约束,这使得验证器组件和类型化数据组件结合的非常紧密。

   验证器组件在实体、文件、聚合器、评论、论坛、链接、用户、测试等等模块中都有应用,虽然drupal8对symfony验证器进行了大量删减,但只要你愿意,仍然可以在模块中直接使用symfony验证器,因为drupal的类加载器完全可以加载symfony验证器的文件,从而像独立使用它一样,在验证一些标量数据时这很方便。

 

(作者注意到网上有一张图是讲解drupal8是如何基于symfony组件的,里面将drupal8组件分为三类并使用颜色标识,一类是drupal8专有(自己开发的),一类是对symfony进行修改后使用的,最后一类是完全使用symfony的组件,其中就将验证器组件归为完全使用symfony的,作者这里想说drupal对symfony的使用并没有那么简单,许多都是经过继承而修改的,该图价值不大,不必太过在意)

 

drupal8验证器:

验证器组件的代码并不集中,而是分散在多个模块中,在\core\lib\Drupal\Core\Validation文件夹中统一提供了一下几个部件:

约束管理器:

约束验证器工厂:

翻译器:

类型化数据验证:

自定义约束:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值