可缓慢实体的symfony类验证器

时间:2012-07-01 09:01:16

标签: class symfony constraints

我有一个带有字段slug的实体的类约束。我想在自定义类约束中对slug进行一些检查,但在约束中getSlug()的值为空。

// my custom class validator
public function isValid( $page, Constraint $constraint ) {
    $slug = $page->getSlug();

=> $slug是空的。

这是我的实体

class page
{
    /**
     * @ORM\Column(name="name", type="string", length=150)
     * @Assert\NotBlank()
     */
    private $name;

    /**
     * @Gedmo\Slug(fields={"name"})
     * @ORM\Column(name="slug", type="string", length=255)
     */
    private $slug;

这是我的控制器:

public function createAction()
{
    $entity  = new Page();
    $request = $this->getRequest();
    $form    = $this->createForm( new PageType(), $entity );
    $form->bindRequest( $request );

$form->bindRequest( $request )中调用自定义类验证程序。我认为,slug没有设置,因为doctrine会将它设置为pre persist事件。但是此事件稍后会在$em->persist( $entity )调用。

有没有办法在我的类约束中找到页面的slug?

1 个答案:

答案 0 :(得分:0)

不,你不能。

就像你说的那样,slug是在prePersist事件中生成的。

你确定你需要验证slug吗?如果是这种情况,请删除@Gedmo\Slug注释并自行创建...但我不确定这是一个非常好的主意。