フィールド スラッグを持つエンティティにクラス制約があります。カスタム クラス制約でスラッグのチェックを行いたいのですが、制約では値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 )
ます。ドクトリンは pre persist イベントでスラッグを設定するので、スラッグは設定されていないと思います。しかし、このイベントは後で で呼び出され$em->persist( $entity )
ます。
クラスの制約でページのスラッグに到達する方法はありますか?