Bonjour,

J'ai un objet d'une classe User_bo. Cette classe User_bo a une propriété UboResponsableId étant un objet de cette même classe User_bo.

Dans cette entité Symfony2, j'ai une méthode appelée par @Assert\Callback qui me permet de vérifier que seuls les utilisateurs ayant seulement le profil gestionnaire ont cette propriété de renseignée.

Voici cette méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public function isResponsableFilledForRole(ExecutionContext $context) {
        if((in_array('ROLE_SUPER_ADMIN', $this->getUboUserId()->getRoles()) ||
            in_array('ROLE_ADMIN', $this->getUboUserId()->getRoles()) ||
            in_array('ROLE_RESPONSABLE', $this->getUboUserId()->getRoles())) &&
           $this->getUboResponsableId() != null) {
            $propertyPath = $context->getPropertyPath() . '.responsable';
            $context->setPropertyPath($propertyPath);
            $context->addViolation('contraintes.utilisateur.responsable', array(), null); // On renvoi l'erreur au contexte
        } else {
            if(in_array('ROLE_GESTIONNAIRE', $this->getUboUserId()->getRoles()) && $this->getUboResponsableId() == null) {
                $propertyPath = $context->getPropertyPath() . '.responsable';
                $context->setPropertyPath($propertyPath);
                $context->addViolation('contraintes.utilisateur.responsableAbsent', array(), null); // On renvoi l'erreur au contexte
            }
        }
    }
mon problème est que si la personne n'a que le rôle gestionnaire, il passe toujours dans la condition
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if(in_array('ROLE_GESTIONNAIRE', $this->getUboUserId()->getRoles()) && $this->getUboResponsableId() == null) {
même si un responsable est renseigné...

j'avais fait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$responsable = $this->getUboResponsableId() == null;
var_dump($responsable);
if(in_array('ROLE_GESTIONNAIRE', $this->getUboUserId()->getRoles()) && $this->getUboResponsableId() == null) {
   var_dump($responsable);die;
[...]
et ça m'affichait ça (dans le cas où un responsable est renseigné) :
boolean false

boolean true

boolean true
Quelqu'un a une idée pour faire ça svp ?

Merci d'avance