验证相关实体,至少一个

时间:2015-03-26 11:38:06

标签: symfony

我有两个实体,“Page”和“Sections”。实体“Page”与实体“Section”具有oneToMany关系。

我创建了一个包含页面和部分集合的表单。我想验证一个页面至少有一个部分。

我在验证yml文件中尝试此操作。

App\MyBundle\Entity\Page:
    properties:
        sections:
            - Valid: ~

是否存在可用于处理此问题的任何约束?或者我必须为此问题编写自己的验证器吗?

1 个答案:

答案 0 :(得分:1)

如果您想看到您的网页至少有一个Section,那么您必须查看Collection部分是否大于0。

App\MyBundle\Entity\Page:
    properties:
        sections:
            - Count: { min: 1, minMessage: "You need to have at least one Section" }

如果您想查看您的Section对象是否也有效,那么您需要为Section实体和PageType表单集cascade_validation => true设置验证策略,如:

App\MyBundle\Entity\Section:
        properties:
            name:
                - NotBlank

和你的FormType

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'App\MyBundle\Entity\Page',
            'cascade_validation' => true,
        ));
    }