Symfonyob娱乐下载 5.1新增功能:ExpressionLanguage验证器
2020年5月6日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
的ExpressionLanguage组件提供编译和计算表达式的引擎。许多公司都使用它来允许非开发人员编写业务规则(例如,计算下面的表达式来决定你的商店是否提供折扣:'user["isActive"] == true and product["price"] > 20'
).
在Syob娱乐下载mfony 5.1中,我们改进了ExpressionLanguage组件验证表达式不需要解析或计算它们。的ExpressionLanguage
而且解析器
类现在包含一个皮棉()
方法验证表达式:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
使用ob娱乐下载\组件\ExpressionLanguage\词法分析程序;使用ob娱乐下载\组件\ExpressionLanguage\解析器;$词法分析程序=新词法分析程序();$解析器=新解析器([]);$解析器->皮棉($词法分析程序->tokenize ($表达式),$allowedVariableNames);$表达式=“foo(“some_key”)。callFunction (?b)”;$allowedVariableNames= (“foo”,“一个”,“b”];//结果:no error;表达式是有效的。$表达式=“foo[“some_key”)”;$allowedVariableNames= (“foo”];//结果:表达式' foo["some_key")在位置3附近打开"["。$表达式='{key: foo key2: bar}';$allowedVariableNames= (“foo”,“酒吧”];//结果:散列值后面必须有逗号//值"key2"的符号"name" ("punctuation" expected with value ",")//在表达式“{key: foo key2: bar}”的第11位附近。
除了使用这些皮棉()
方法,你也可以使用新的ExpressionLanguageSyntax
约束来验证存储在某些属性中的值定义了有效的ExpressionLanguage语法(你也可以选择验证表达式变量名):
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
名称空间应用程序\实体;使用ob娱乐下载\组件\验证器\约束作为断言;类订单{/ * * *@Assert\ ExpressionLanguageSyntax () * /受保护的$促销活动;/ * * *@Assert\ExpressionLanguageSyntax(* names = ['user', 'shipping_centers'], * validateNames = true *) */受保护的$shippingOptions;}
发表在#生活在边缘
评论
库巴地毯bednarski
2020年5月6日说在12:26
# 1
不错,谢谢!
塞缪尔·维森特·皮塔克
2020年6月1日说在08:51
#2
验证我真的期待,这真的有助于有一个更干净的代码,非常感谢!
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。