Php 如何将参数传递给Symfony2-inyml中的验证约束
我正在尝试向我的应用程序添加一个包范围的参数,以便将其添加到我的验证约束文件(Validation.yml): 我在config.yml中添加了我的参数:Php 如何将参数传递给Symfony2-inyml中的验证约束,php,symfony,yaml,Php,Symfony,Yaml,我正在尝试向我的应用程序添加一个包范围的参数,以便将其添加到我的验证约束文件(Validation.yml): 我在config.yml中添加了我的参数: parameters: # Validation config myvariable: Please tell us your name. 但是页面只呈现%myvariable%文本,而不是所需的字符串。在将验证消息添加到页面以便在JavaScript中使用时,我还希望在FormBuilderInterface中使用此参数。
parameters:
# Validation config
myvariable: Please tell us your name.
但是页面只呈现%myvariable%文本,而不是所需的字符串。在将验证消息添加到页面以便在JavaScript中使用时,我还希望在FormBuilderInterface中使用此参数。yml允许这样做吗?如果没有,我如何在更高级别包含这样的参数?否,目前不可能 它与YAML或XML甚至服务定义无关。验证程序组件本身读取验证规则——正如您所看到的,该结构与服务定义的结构大不相同。不幸的是,它不能替换约束中的参数 主要逻辑位于由
\Symfony\Component\Validator\Mapping\Loader\YamlFileLoader
创建的\Symfony\Component\Validator\ValidatorBuilder::getValidator
中
您可以通过以下方式实现这一点:
validator.builder
服务的定义%validator.builder.factory.class%构造的:createValidatorBuilder
,但由于您必须以某种方式获取参数包,因此没有足够的依赖项-使用的是类工厂,而不是服务工厂
ValidatorBuilder
YamlFileLoader
和YamlFilesLoader
创建新类。对于您希望支持的每种格式,增加2个newConstraint
方法中完成——迭代选项,解析参数,然后用替换的选项调用父方法
Symfony可以这样扩展很好(在这个用例中可能不是很好),但我想用自定义约束验证器编写您自己的约束会更容易,它会将该参数注入其中
还考虑验证器服务周围的包装器——如果您只需要替换验证消息,可以替换<代码>验证器< /C>服务,将原始的一个注入其中。有关更多信息,请参阅。
我有同样的问题(以前没有发现这个问题),其中有一些有趣的评论(但还没有答案):parameters:
# Validation config
myvariable: Please tell us your name.