2012-03-14 133 views
0

如果我在Symfony2中创建自定义约束和约束验证器,我必须使用完全限定名将其附加到我的实体。我知道我可以别名命名为配置变量,但我想知道如果我可以在我的命名空间添加到那些的Symfony将加载,所以我可以用MyConstraint,而不是FQDN/Path/To/MyConstraintsome.definition.of.myconstraint我可以将我的名称空间添加到Symfony2验证例程吗?

回答

0

我想你要做到以下几点你EntityClass:

use FQDN/Path/To/MyConstraint AS MyConstraint; 

之后,MyConstraint命名空间中的所有类可以批注中使用:

@MyConstraint\SomeConstraint() 
+0

这一切在Symfony2的YAML配置,所以没有命名空间魔法来完成的不幸。 – jhogendorn 2012-03-14 23:14:24

1

在你validation.yml文件,你可以添加以下

namespaces 
    any_name: Path\To\Your\Validator\Namespace\ 

然后,你可以做

FQCN\Of\Entity: 
    constraints: 
    - "any_name:YourConstraint": ~ 
+0

这是一个可以接受的解决方案,非常感谢,但我不打算将它作为答案,因为它并不真正满足原始问题的意图。也许我可以将命名空间添加到另一个配置的某处,而不必使用前缀:名称符号? – jhogendorn 2012-03-21 04:45:56

+0

AFAIK'namespaces'部分对单个'validation.yml'有效。也许你可以把使用约束的实体放在同一个'validation.yml'文件中。 – 2012-03-21 05:23:28

+0

我目前正在这样做,但它会是一个更好的解决方案,可以做类似于zend所做的事情,并允许编译名称空间以查找所请求的验证器。 – jhogendorn 2012-03-21 06:42:18

相关问题