php - Symfony2 验证在实体关系/关联时不起作用

标签 php validation associations entity symfony-2.1

Controller

public function indexAction(Request $request)
{
    $user = $this->container->get('security.context')->getToken()->getUser();
    $owner = $user->getId();

    $first = new First();
    $first->setOwner($owner);

    $second = new Second();
    $second->setOwner($owner);
    $second->setFirst($first);

    $form = $this->createForm(new SecondType(), $second);

    if ($request->getMethod() == 'POST') {
        $form->bindRequest($request);

        if ($form->isValid()) {
            $em = $this->get('doctrine')->getEntityManager();
            $em->persist($first);
            $em->persist($second);
            $em->flush();
        }
    }

    return $this->render('MySampleBundle:Home:index.html.twig', array(
        'form' => $form->createView(),
    ));

}

ORM 标签

My\SampleBundle\Entity\First:
    type: entity
    table: first
    id:
        id:
            type: integer
            generator: { strategy: AUTO }
    fields:
        title:
            type: string
        date_created:
            type: datetime
        date_edited:
            type: datetime
        owner:
            type: integer
    lifecycleCallbacks:
        prePersist: [ prePersist ]
        preUpdate: [ preUpdate ]
    oneToMany:
        reviews:
            targetEntity: Second
            mappedBy: review

My\SampleBundle\Entity\Second:
    type: entity
    table: second
    id:
        id:
            type: integer
            generator: { strategy: AUTO }
    fields:
        review:
            type: string
        date_created:
            type: datetime
        date_edited:
            type: datetime
        owner:
            type: integer
    lifecycleCallbacks:
        prePersist: [ prePersist ]
        preUpdate: [ preUpdate ]
    manyToOne:
        first:
            targetEntity: First
            inversedBy: reviews
            joinColumn:
                name: first_id
                referencedColumnName: id

表格/类型

class FirstType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('title', 'text');
    }

    public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => 'My\SampleBundle\Entity\First',
        );
    }

    public function getName()
    {
        return 'first';
    }
}

class SecondType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('first', new FirstType());
        $builder->add('review', 'textarea');
    }

    public function getName()
    {
        return 'second';
    }
}

验证.yml

My\SampleBundle\Entity\First:
    properties:
        title:
            - NotBlank: ~
            - MinLength: 2

My\SampleBundle\Entity\Second:
    properties:
        review:
            - NotBlank: ~
            - MinLength: 14

创建的表单正常工作。 但是,只有验证不能正常工作。

如果单独执行,验证将正常工作。

$form = $this->createForm(new FirstType(), $first);

但是,如果是Entity Relationships/Associations状态,则first validation将不起作用。First在一个字符中的title属性将被注册。

我怎样才能做到这一点?

最佳答案

Symfony 2.1+ 不会自动验证所有嵌入的对象。你需要把 Valid constraintfirst 字段上使其也有效:

My\SampleBundle\Entity\Second:
    properties:
        first:
            - Valid: ~

关于php - Symfony2 验证在实体关系/关联时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12908658/

相关文章:

php - MySQL 查询在 phpmyadmin 中工作,但在 php 中不工作

java - 将只读字符串插入 jTextArea

ruby-on-rails - 使用delete_all/delete删除rails事件记录违反了外键约束

mysql - Node js : association not working in sails js version 1

ruby-on-rails - Rails : If Foo has_many :bars, 做所有 :bars need to belong_to a Foo?

php - 是否需要验证函数参数?

php - laravel - 调用数组的成员函数 map()

spring - 当 Spring 无法验证模型的 java.util.Date 字段时,如何显示用户友好的错误?

php - URL 查询参数可以有多长?

php - Laravel 根据用户选择返回结果