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 :
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
if(in_array('ROLE_GESTIONNAIRE', $this->getUboUserId()->getRoles()) && $this->getUboResponsableId() == null) {
même si un responsable est renseigné...
j'avais fait ça :
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
Partager