Adicionando regras de validação personalizadas ao SonataUserBundle

Instalei o SonataUserBundle de acordo com os documentos e tudo funciona bem. Exceto que não posso adicionar regras de validação personalizadas.

Meu entendimento é que as novas regras devem ser adicionadas a um novo Grupo de Validação e o config.yml é atualizado para informar ao SonataUserBundle (ou FosUserBundle) para adicionar as novas regras à sequência de validação.

Eu tentei isso de várias maneiras, mas as novas regras simplesmente não parecem ser adotadas ...

Aqui está a configuração que estou usando ...

(Para o propósito deste exemplo, estou apenas tentando adicionar uma restrição NotNull a um novo campo foo. Na realidade, gostaria de ver tanto trabalho e adicionar mais regras de validação.)

Eu adicionei o campo foo aoApplication\Sonata\UserBundle\Resources\config\doctrine\User.orm.xml e que tudo funciona bem, adicionando o campo foo aoUser.php classe.

# in Application\Sonata\UserBundle\Resources\config\doctrine\User.orm.xml
...
<field name="foo" type="string" length="100" nullable="true" />
...

No User.php, temos a propriedade com seus getters e setters:

// In Application\Sonata\UserBundle\Entity\User.php
// ...
/**
 * @var string
 */
private $foo;

/**
 * Set foo
 *
 * @param string $foo
 * @return User
 */
public function setFoo($foo)
{
    $this->foo = $foo;

    return $this;
}

/**
 * Get foo
 *
 * @return string 
 */
public function getFoo()
{
    return $this->foo;
}
// ...

Adicionei a nova regra de validação ao arquivo validation.yml existente do meu projeto:

Application\Sonata\UserBundle\Entity\User:
    properties:
        foo:
            - NotNull: { groups: [CustomGroup] }

(Observe que eu também tentei criar um arquivo validation.yml e validation.xml em Application \ Sonata \ UserBundle \ Resources \ config, mas isso não pareceu fazer nenhuma diferença.)

No config.yml, digo ao SonataUserBundle para usar meu novo CustomGroup para validação:

sonata_user:
    # ...
    profile:
        form:
            validation_groups:  [CustomGroup, Profile, Default]

(Observe que também tentei adicionar o grupo de validação no nível fos_user (fos_user.profile.form.validation_groups: [CustomGroup, Profile, Default]) e adicionandosonata_user.profile.register.form.validation_groups: [CustomGroup, Registration, Default], mas sem sucesso.)

E, para completar, eis o campo adicionado ao UserAdmin.php:

// In Application\Sonata\UserBundle\Admin\UserAdmin.php
protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->with('General')
            // ...
            ->add('foo',        null, array('required' => false))
        ->end()
    ;
}

Então ... o que eu perdi? O formulário UserAdmin não é o mesmo que o formulário 'perfil'? (Embora eu também tenha tentado atualizar as configurações do formulário de registro) ou defino as regras de validação em outro lugar?

Espero que eu tenha perdido algo pequeno!

Desde já, obrigado,

C

questionAnswers(1)

yourAnswerToTheQuestion