回调
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.0,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
回调
回调断言的目的是让您创建完全自定义的验证规则和分配任何验证错误对象特定字段。如果你使用验证与形式,这意味着您可以让这些自定义错误旁边显示一个特定的领域,而不是简单的表单的顶部。
这个过程通过指定一个或多个工作回调方法,每一个都将被称为验证过程中。这些方法可以做任何事情,包括创建和分配验证错误。
请注意
一个回调方法本身没有失败或返回任何值。相反,您将看到在这个例子中,一个回调方法直接添加验证器“违规”的能力。
适用于 | 类 |
选项 | |
类 | 回调 |
验证器 | CallbackValidator |
设置
- YAML
- 注释
- XML
- PHP
1 2 3 4 5
# src / Acme / BlogBundle /资源/ config / validation.ymlAcme \ BlogBundle \实体\作者:约束:- - - - - -回调函数:方法:(isAuthorValid)
1 2 3 4 5 6 7 8 9 10 11
/ / src / Acme / / Author.php BlogBundle /实体名称空间Acme\BlogBundle\实体;使用ob娱乐下载\组件\验证器\约束作为断言;/ * * *@Assert\回调(方法= {" isAuthorValid "}) * /类作者{}
1 2 3 4 5 6 7 8
< !- - - - - -- - - - - -src/Acme/BlogBundle/Resources/config/validation.xml -->< /span><类的名字=“Acme \ BlogBundle \实体\作者”><约束的名字=“回调”><选项的名字=“方法”><价值>isAuthorValid< /价值>< /选项>< /约束>< /类>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / src / Acme / / Author.php BlogBundle /实体名称空间Acme\BlogBundle\实体;使用ob娱乐下载\组件\验证器\映射\ClassMetadata;使用ob娱乐下载\组件\验证器\约束作为断言;类作者{公共静态函数loadValidatorMetadata(ClassMetadata美元元数据){美元元数据- >addConstraint (新维护\回调(数组(“方法”= >数组(“isAuthorValid”))));}}
回调方法
通过一个特殊的回调方法ExecutionContext
对象。你可以设置“侵犯”直接在这个对象并确定哪个字段这些错误应该是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
/ /……使用ob娱乐下载\组件\验证器\ExecutionContext;类作者{/ /……私人美元firstName;公共函数isAuthorValid(ExecutionContext美元上下文){/ /你有一个数组的“假名”美元fakeNames=数组();/ /检查是否这个名字实际上是一个假名字如果(in_array (美元这- >getFirstName (),美元fakeNames)){美元propertyPath=美元上下文- >getPropertyPath ()。“.firstName”;美元上下文- >setPropertyPath (美元propertyPath);美元上下文- >addViolation (“这名字听起来完全假的!”,数组(),零);}}}
选项
方法
类型:数组
默认的:数组()
(默认的选项]
这是一个数组的方法验证过程中应该执行。每个方法可以下列形式之一:
字符串方法名称
如果一个方法的名称是一个简单的字符串(例如
isAuthorValid
),该方法将呼吁同一个对象的验证和ExecutionContext
将是唯一的论点(见上面的例子)。静态数组的回调
每个方法也可以被指定为一个标准的数组回调:
- YAML
- 注释
- XML
- PHP
1 2 3 4 5 6
# src / Acme / BlogBundle /资源/ config / validation.ymlAcme \ BlogBundle \实体\作者:约束:- - - - - -回调函数:方法:- - - - - -(Acme \ BlogBundle \ MyStaticValidatorClass,isAuthorValid]
1 2 3 4 5 6 7 8 9 10 11
/ / src / Acme / / Author.php BlogBundle /实体使用ob娱乐下载\组件\验证器\约束作为断言;/ * * *@Assert\回调(方法= {* {“Acme \ BlogBundle \ MyStaticValidatorClass”、“isAuthorValid”} *}) * /类作者{}
1 2 3 4 5 6 7 8 9
< !- - - - - -- - - - - -src/Acme/BlogBundle/Resources/config/validation.xml -->< /span><类的名字=“Acme \ BlogBundle \实体\作者”><约束的名字=“回调”><选项的名字=“方法”><价值>Acme \ BlogBundle \ MyStaticValidatorClass< /价值><价值>isAuthorValid< /价值>< /选项>< /约束>< /类>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / src / Acme / / Author.php BlogBundle /实体使用ob娱乐下载\组件\验证器\映射\ClassMetadata;使用ob娱乐下载\组件\验证器\约束\回调;类作者{公共美元的名字;公共静态函数loadValidatorMetadata(ClassMetadata美元元数据){美元元数据- >addConstraint (新回调(数组(“方法”= >数组(“isAuthorValid”))));}}
在这种情况下,静态方法
isAuthorValid
会呼吁吗Acme \ BlogBundle \ MyStaticValidatorClass
类。它是通过原始对象被认可(如。作者
),以及ExecutionContext
:1 2 3 4 5 6 7 8 9 10 11 12
名称空间Acme\BlogBundle;使用ob娱乐下载\组件\验证器\ExecutionContext;使用Acme\BlogBundle\实体\作者;类MyStaticValidatorClass{公共静态函数isAuthorValid(作者美元作者,ExecutionContext美元上下文){/ /……}}
提示
如果你指定
回调
约束通过PHP,那么你也可以选择让你的回调一个PHP关闭或非静态的回调函数。它是不然而,目前,指定一个服务作为一个约束。验证使用服务,你应该创建一个定制的验证约束和新约束添加到您的类。