我有一个带有字段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?
答案 0 :(得分:0)
不,你不能。
就像你说的那样,slug是在prePersist
事件中生成的。
你确定你需要验证slug吗?如果是这种情况,请删除@Gedmo\Slug
注释并自行创建...但我不确定这是一个非常好的主意。