在Symfony2中,可以使用导入将validation.yml文件拆分为多个文件吗?

int*_*ion 18 php yaml symfony

现在,我有一个名为validation.yml的文件,它在一个文件中验证了所有bundle的实体.

validation.yml

Blogger\BlogBundle\Entity\Comment
    properties:
        username:
            - NotBlank:
                message: You must enter your name
            - MaxLength: 50
        comment:
            - NotBlank:
                message: You must enter a comment
            - MinLength: 50

Blogger\BlogBundle\Entity\Enquiry:
    properties:
        name:
            - NotBlank: ~
        email:
            - Email:
                message: symblog does not like invalid emails. Give me a real one!
        subject:
            - NotBlank: ~
            - MaxLength: 50
        body:
            - MinLength: 50
Run Code Online (Sandbox Code Playgroud)

但是我想把它分成两个文件并导入它们.这是我尝试过的,它不起作用:

validation.yml

imports:
    - { resource: comment.yml }
    - { resource: enquiry.yml }
Run Code Online (Sandbox Code Playgroud)

comment.yml

Blogger\BlogBundle\Entity\Comment
    properties:
        username:
            - NotBlank:
                message: You must enter your name
            - MaxLength: 50
        comment:
            - NotBlank:
                message: You must enter a comment
            - MinLength: 50
Run Code Online (Sandbox Code Playgroud)

enquiry.yml

Blogger\BlogBundle\Entity\Enquiry:
    properties:
        name:
            - NotBlank: ~
        email:
            - Email:
                message: symblog does not like invalid emails. Give me a real one!
        subject:
            - NotBlank: ~
            - MaxLength: 50
        body:
            - MinLength: 50
Run Code Online (Sandbox Code Playgroud)

Mun*_*Das 28

load方法中添加这些行src/Blogger/BlogBundle/DependencyInjection/BloggerBlogExtension.php.

public function load(array $configs, ContainerBuilder $container)
{
  //...
  $yamlMappingFiles = $container->getParameter('validator.mapping.loader.yaml_files_loader.mapping_files');
  $yamlMappingFiles[] = __DIR__.'/../Resources/config/comment.yml';
  $yamlMappingFiles[] = __DIR__.'/../Resources/config/enquiry.yml';
  $container->setParameter('validator.mapping.loader.yaml_files_loader.mapping_files', $yamlMappingFiles);
}
Run Code Online (Sandbox Code Playgroud)

  • 在Symfony 2.5中删除了此参数 - 请参阅下面的答案以获取更新说明. (3认同)

fel*_*ins 7

答案在2015年添加

从Symfony开始2.7,加载位于Resources/config/validation包的子目录中的XML和Yaml约束文件 .
之前2.7,仅Resources/config/validation.yml加载(或.xml).

更多信息:


Kev*_*ond 6

Symfony 2.5打破了上述解决方案.请参阅:https://stackoverflow.com/a/24210501/175753


小智 5

您可以添加到services.xml

<parameters>
    <parameter key="validator.mapping.loader.yaml_files_loader.mapping_files" type="collection">
        <parameter>Blogger\BlogBundle\Resources\config\comment.yml</parameter>
        <parameter>Blogger\BlogBundle\Resources\config\enquiry.yml</parameter>
    </parameter>
</parameters>
Run Code Online (Sandbox Code Playgroud)