Symfonyob娱乐下载 6.2新增功能:条件约束
2022年11月9日·发表的哈维尔Eguiluz
ob娱乐下载Symfony 6.2是支持通过Les-Tilleuls.coop.Les-Tilleuls.coop是a team of 70+ Symfony experts who can help you design, develop and fix your projects. We provide a wide range of professional services including development, consulting, coaching, training and audits. We also are highly skilled in JS, Go and DevOps. We are a worker cooperative!
Symfob娱乐下载ony的验证器组件包括一些高级约束,如回调(实现自定义验证规则),按顺序(按顺序应用一套规则,并在任何时候打断它们),复合(以创建一组可重用约束),等等。
在Syob娱乐下载mfony 6.2中,我们在这个列表中添加了另一个高级约束:当
,它允许实现条件验证。
考虑一个折扣
类的两个属性:
1 2 3 4 5 6 7 8 9 10
/ / src /模型/ Discount.php名称空间应用程序\模型;类折扣{私人字符串?$类型;私人int ?$价值;/ /……}
为了验证对象内容,你需要应用这些规则:
- 如果
类型
是百分比
,然后价值
必须小于或等于One hundred.
; - 如果
类型
是绝对
,然后价值
可以是任何值; - 在所有情况下,
价值
必须大于0。
新当
约束定义了两个主要选项表达式
而且约束
.只有当表达式求值的结果为时,才会强制执行这些约束真正的
.您可以按照以下方法使用它来验证价值
小于One hundred.
只要折扣类型
是百分比
:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用ob娱乐下载\组件\验证器\约束作为断言;/ /……类折扣{#[断言\ GreaterThan (0))#[断言\时(表达式:“这。类型== "percent"',约束条件:[新维护\ LessThanOrEqual (One hundred.消息:“这个值应该在1到100之间!”)],)]私人int ?$价值;/ /……}
条件传递给表达式
选项必须使用Symfonyob娱乐下载ExpressionLanguage语法.在表达式中,可以使用这
变量引用正在验证的对象价值
引用正在求值的属性(这仅在应用当
约束到属性)。
最后,你可以组合当
使用其他高级约束,例如回调
定义复杂的条件验证:
12 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\验证器\约束作为断言;使用ob娱乐下载\组件\验证器\上下文\ExecutionContextInterface;类折扣{#[断言\时(表达式:value == " % ",约束条件:[新维护\回调(“doComplexValidation”))))私人字符串?$类型;/ /……}
发表在#生活在边缘
评论
马特奥Alborghetti
2022年11月10日在“
爱这个
文森特AMSTOUTZ
2022年11月10日10点
一个伟大的补充,将节省大量的时间,再次感谢!
你可以使用表达式调用你实体的任何方法:
表情:“this.isCustomConditionMethodValid”
表情:“this.isCustomConditionMethodValid”
当直接在表单类型中使用Assert\When约束时,是否可以使用回调而不是表达式?
如
$form->add('type', SomeType::class, [
'constraints' => [
新维护\ ([
'expression' => fn (DataClass $data) => $data->getSomeField() === 'some_value',
'constraints' =>[…],
),
]);
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now