Ciao a tutti,
innanzitutto saluto tutti.
Sono un nuovo utente e, come avrete capito, mi sto avvicinando a questo interessante framework.
Fatta questa premessa veniamo al problema.
Vorrei far comparire a destra del nome utente, dopo il login, anche il suo ruolo.
Per fare questo, ho creato nella tabella utente di mysql un campo ruolo che per il momento, può avere admin o staff.
Poi ho studiato un pò la classe UserIdentity ed ho capito che si può settare nella sessione di login uno o più valori con il metodo setState(key,val).
Ho provato a scrivere il seguente codice nella classe UserIdentity:
$this->setState('roles', $user->ruolo);
In pratica vorrei aggiungere alla variabile roles, nella sessione, il valore restituito dalla query sulla tabella utente.
Poi ho modificato il menu in questo modo di main.php (ho aggiunto Yii::app()->user->roles):
array('label'=>'Logout ( '.Yii::app()->user->name. ' - '.Yii::app()->user->roles. ' )', 'url'=>array('/site/logout'), 'visible'=>!Yii::app()->user->isGuest)
Il problema è che a volte l’applicazione va in errore in quanto la variabile user->roles non è definita…ed ottengo una CException “Property “CWebUser.roles” is not defined.”
Se provo a fare login senza visualizzare il ruolo nel menu, poi modifico il sorgente in modo da visualizzare il ruolo nel menu, e faccio refresh della pagina ottengo il valore corretto.
Come posso risolvere?
Grazie.