Validation symfony注释验证覆盖实体/模型

Validation symfony注释验证覆盖实体/模型,validation,symfony,model,annotations,Validation,Symfony,Model,Annotations,我试图覆盖论坛捆绑包的实体验证。 我是这样做的: 类别实体: //src/MSD/ForoBundle/Entity/Category.php namespace MSD\ForoBundle\Entity; use Herzult\Bundle\ForumBundle\Entity\Category as BaseCategory; use Doctrine\ORM\Mapping as ORM; /** * @ORM\Entity(repositoryClass="Herzult\

我试图覆盖论坛捆绑包的实体验证。 我是这样做的:

类别实体:

//src/MSD/ForoBundle/Entity/Category.php

namespace MSD\ForoBundle\Entity;

use Herzult\Bundle\ForumBundle\Entity\Category as BaseCategory;
use Doctrine\ORM\Mapping as ORM;


/**
 * @ORM\Entity(repositoryClass="Herzult\Bundle\ForumBundle\Entity\CategoryRepository")
 */
class Category extends BaseCategory
{
}
主题实体:

//src/MSD/ForoBundle/Entity/Topic.php

namespace MSD\ForoBundle\Entity;

use Herzult\Bundle\ForumBundle\Entity\Topic as BaseTopic;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Topic
 *
 * @ORM\Entity(repositoryClass="Herzult\Bundle\ForumBundle\Entity\TopicRepository")
 *
 */
class Topic extends BaseTopic
{
/**
 * @ORM\ManyToOne(targetEntity="Category")
 */
protected $category;

/**
 * @Assert\NotBlank()
 * @Assert\MinLength(limit=4, message="Just a little too short| ")
 * @Assert\Regex(
* pattern="/^[a-zA-Z0-9\-_¿?!¡ ]{4,50}$/",
* message="El tema puede contener letras, números, guiones y espacios, interrogantes y exclamaciones. Entre 4 y 30 caracteres"
* )
*/
protected $subject;

/**
 * {@inheritDoc}
 */
public function getAuthorName()
{
    return $this->author;
}

/**
 * @ORM\ManyToOne(targetEntity="User")
 */
private $author;

public function setAuthor(User $user)
{
    $this->author = $user;
}

public function getAuthor()
{
    return $this->author;
}
}
/**
 * @Assert\NotBlank
 * @Assert\Valid
 */
protected $firstPost;
邮政实体:

//src/MSD/ForoBundle/Entity/Post.php

namespace MSD\ForoBundle\Entity;

use Herzult\Bundle\ForumBundle\Entity\Post as BasePost;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity(repositoryClass="Herzult\Bundle\ForumBundle\Entity\PostRepository")
 */
class Post extends BasePost
{
/**
 * @ORM\ManyToOne(targetEntity="Topic")
 */
protected $topic;

 /**
 * @Assert\Regex(
* pattern="/^[^<>]{4,1000}$/",
* message="El mensaje no puede contener '<' ni '>'. Entre 4 y 1000 caracteres"
* )
 *
 */
public $message;

public function getAuthorName()
{
    return $this->author;
}
/**
 * @ORM\ManyToOne(targetEntity="User")
 */
private $author;

public function setAuthor(User $user)
{
    $this->author = $user;
}

public function getAuthor()
{
    return $this->author;
}
}
//src/MSD/ForoBundle/Entity/Post.php
命名空间MSD\ForoBundle\Entity;
使用Herzult\Bundle\ForumBundle\Entity\Post作为BasePost;
使用条令\ORM\Mapping作为ORM;
使用Symfony\Component\Validator\Constraints作为断言;
/**
*@ORM\Entity(repositoryClass=“Herzult\Bundle\ForumBundle\Entity\PostRepository”)
*/
类Post扩展了BasePost
{
/**
*@ORM\manytone(targetEntity=“Topic”)
*/
受保护的主题;
/**
*@Assert\Regex(
*pattern=“/^[^]{41000}$/”,
*message=“El mensaje no puede contenner”“。输入4 y 1000个字符”
* )
*
*/
公共信息;
公共函数getAuthorName()
{
返回$this->author;
}
/**
*@ORM\manytone(targetEntity=“User”)
*/
私人作家;
公共函数setAuthor(用户$User)
{
$this->author=$user;
}
公共函数getAuthor()
{
返回$this->author;
}
}
验证工作。。。除了第一篇文章的信息!!这是在创建新主题时创建的。 我尝试过很多改变,但都没有成功。 你知道为什么会这样吗


谢谢你

是的!我得到了它。解决方案是在主题实体中添加以下内容:

//src/MSD/ForoBundle/Entity/Topic.php

namespace MSD\ForoBundle\Entity;

use Herzult\Bundle\ForumBundle\Entity\Topic as BaseTopic;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Topic
 *
 * @ORM\Entity(repositoryClass="Herzult\Bundle\ForumBundle\Entity\TopicRepository")
 *
 */
class Topic extends BaseTopic
{
/**
 * @ORM\ManyToOne(targetEntity="Category")
 */
protected $category;

/**
 * @Assert\NotBlank()
 * @Assert\MinLength(limit=4, message="Just a little too short| ")
 * @Assert\Regex(
* pattern="/^[a-zA-Z0-9\-_¿?!¡ ]{4,50}$/",
* message="El tema puede contener letras, números, guiones y espacios, interrogantes y exclamaciones. Entre 4 y 30 caracteres"
* )
*/
protected $subject;

/**
 * {@inheritDoc}
 */
public function getAuthorName()
{
    return $this->author;
}

/**
 * @ORM\ManyToOne(targetEntity="User")
 */
private $author;

public function setAuthor(User $user)
{
    $this->author = $user;
}

public function getAuthor()
{
    return $this->author;
}
}
/**
 * @Assert\NotBlank
 * @Assert\Valid
 */
protected $firstPost;

然后,第一篇文章的信息被验证。

是的!我得到了它。解决方案是将这一行放在主题实体中: