Je souhaite ajouter plusieurs rôles pour un utilisateur. Cependant, je suis gettng l'erreur suivante:Zend Exception InvalidArgumentException non interceptée lors de l'ajout de plusieurs rôles pour un utilisateur
Fatal error: Uncaught Zend\View\Exception\InvalidArgumentException: $role must be a string, null, or an instance of Zend\Permissions\Role\RoleInterface; array given in C:\xampp\htdocs\newtt\vendor\zendframework\zend-view\src\Helper\Navigation\AbstractHelper.php:704.
code:
public function getViewHelperConfig()
{
return array(
'factories' => array(
// This will overwrite the native navigation helper
'navigation' => function(HelperPluginManager $pm) {
$sm = $pm->getServiceLocator();
$config = $sm->get('Config');
$Adapter = $sm->get('Model\Adabter');
$table = new \Models\Exnewtt\ExProfilfonctionnaliteTable($Adapter);
$acl = new \Navigation\Acl\Acl($config);
// Get the AuthenticationService
$auth = $sm->get('Zend\Authentication\AuthenticationService');
$role = \Navigation\Acl\Acl::DEFAULT_ROLE; // The default role is login $acl
if ($auth->hasIdentity()) {
$user = $auth->getIdentity();
$usrlId = $user->id_profil;
$authorization = $table->getProfilfonctionnalite2($usrlId);
$navigation = $pm->get('Zend\View\Helper\Navigation');
$roles = array();
$a = array();
foreach ($authorization as $autho) :
// TODO we don't need that if the names of the roles are comming from the DB
$a[$autho->id_fonctionnalite]= $autho->id_fonctionnalite;
if($autho->id_fonctionnalite == 0) {
$role = \Navigation\Acl\Acl::DEFAULT_ROLE; // login
$roles[$autho->id_fonctionnalite] ='login';
}
else if($autho->id_fonctionnalite == 1) {
$role = 'non';
// Store ACL and role in the proxy helper:
$roles[$autho->id_fonctionnalite] ='non';
} else if($autho->id_fonctionnalite == 2) {
$role = 'agent';
$roles[$autho->id_fonctionnalite] ='agent';
} else if($autho->id_fonctionnalite == 3) {
$role = 'admin' ;
$roles[$autho->id_fonctionnalite] ='admin';
}
else if($autho->id_fonctionnalite == 4) {
$role = 'article' ;
$roles[$autho->id_fonctionnalite] = 'article';
}
else if($autho->id_fonctionnalite == 5) {
$role = 'comptecomptable';
$roles[$autho->id_fonctionnalite] ='comptecomptable';
} else if($autho->id_fonctionnalite == 6) {
$roles[$autho->id_fonctionnalite] ='espacett';
}
else if($autho->id_fonctionnalite == 7) {
$roles[$autho->id_fonctionnalite] = 'profil';
}
else if($autho->id_fonctionnalite == 8) {
$role = 'remise';
$roles[$autho->id_fonctionnalite] = 'remise';
}
else if($autho->id_fonctionnalite == 9) {
$role = 'tracage';
$roles[$autho->id_fonctionnalite] ='tracage';
}
else if($autho->id_fonctionnalite == 10) {
$role = 'taxe';
$roles[$autho->id_fonctionnalite] = 'taxe';
}
else if($autho->id_fonctionnalite == 11) {
$role = 'utilisateur';
$roles[$autho->id_fonctionnalite] ='utilisateur';
}
else {
$role =\Navigation\Acl\Acl::DEFAULT_ROLE;; // login
$roles[$autho->id_fonctionnalite] = 'login';
}
endforeach;
}
// Return the new navigation helper instance
$navigation->setAcl($acl)->setRole($roles);
return($navigation) ;
}
)
);
}