新在Symfo欧宝娱乐app下载地址ny 2.4:一个更好的回调约束
2013年10月9日,·发表的法比安效力
警告:这篇文章是关于一个不受支持的Symfony的版本。欧宝娱乐app下载地址其中一些信息可能是过时了。阅读最近的Symfony文档欧宝娱乐app下载地址。
有时候,我们比他们应该让事情变得更复杂;的回调
约束是这样的一个例子,使用它在Symfony 2.4是简单得多,觉得更自然,更强大的在同一时间。欧宝娱乐app下载地址
的回调
约束是一个伟大的方式来定义自定义验证规则而不需要创建自定义约束和验证器类。你只需要创建一个或多个方法的验证和生成一些违规行为。但是在2.4之前,需要约束附加到类本身,而不是验证方法(s),导致一些冗长的配置(在所有配置格式):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
使用欧宝娱乐app下载地址\组件\验证器\ExecutionContextInterface;/ * * *@Assert\回调(方法= {* {“Acme \ BlogBundle \ MyStaticValidatorClass”、“isAuthorValid”} *}) * /类作者{/ /……公共函数isAuthorValid(ExecutionContextInterface美元上下文){/ /你有一个数组的“假名”美元fakeNames=数组();/ /检查是否这个名字实际上是一个假名字如果(in_array (美元这- >getFirstName (),美元fakeNames)){美元上下文- >addViolationAt (“firstname”,“这名字听起来完全假的!”,数组(),零);}}}
Symfon欧宝娱乐app下载地址y 2.4,你可以注释方法本身(XML或YAML配置格式也简单得多写):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
使用欧宝娱乐app下载地址\组件\验证器\ExecutionContextInterface;类作者{/ /……/ * * *@Assert\调* /公共函数isAuthorValid(ExecutionContextInterface美元上下文){/ /你有一个数组的“假名”美元fakeNames=数组();/ /检查是否这个名字实际上是一个假名字如果(in_array (美元这- >getFirstName (),美元fakeNames)){美元上下文- >addViolationAt (“firstname”,“这名字听起来完全假的!”,数组(),零);}}}
您还可以使用一个外部方法来验证你的对象,在这种情况下,回调将得到对象来验证第一个参数:
1 2 3 4 5 6 7 8
使用欧宝娱乐app下载地址\组件\验证器\约束作为断言;/ * * *@Assert\回调({“供应商\包\验证器”,“验证”})* /类作者{}
的回调的约束欧宝体育电话文档页面给你所有的信息你需要升级现有的代码,并利用新特性。
当然,老方法仍保持向后兼容性,但谁也不会想升级到新方法吗?
发表在#生活在边缘
评论
评论都关门了。
以确保评论保持相关,他们关闭了旧的帖子。
如果你能注释的方法应该就叫做“验证”
在最后一部分应该更清楚
供应商\包\验证器变成了
Acme \ BlogBundle \ MyStaticValidatorClass
自你介绍它
像它看起来只是一些帮助澄清,目前尚不清楚,因为它是现在