Vash
(Angelvash88)
August 2, 2011, 2:13pm
1
Ho una domanda non mi è chiaro come estendere Yii::app()->user ovvero vorrei sapere ad esempio il cognome del disgraziato loggiato per stamparlo nel main.php
quindi mi è venuto in mente di espandere Yii::app()->user-> ma come? perché ho provato ma risultato… un sacco di errori
Diegovl
(Diego Viola1)
August 2, 2011, 2:44pm
2
Quello che vuoi fare tu è accedere a dei dati che non esistono in quel momento nella classe.
Perché?
Perché fare Yii::app()->user->proprietà non è altro che accedere ad una sessione persistente con i dati che tu scegli.
Mi spiego meglio: dopo il login voglio che il cognome di Tizio rimanga in sessione, e voglio richiamarlo sempre tramite Yii::app()->user->cognome.
Come fare?
Così:
$this->setState(‘cognome’, $record->cognome);
dove $this fa riferimento alla classe CUserIdentity.
Trovi un esempio qui: http://www.yiiframework.com/doc/guide/1.1/en/topics.auth
Vash
(Angelvash88)
August 2, 2011, 2:55pm
3
Diegovl:
Quello che vuoi fare tu è accedere a dei dati che non esistono in quel momento nella classe.
Perché?
Perché fare Yii::app()->user->proprietà non è altro che accedere ad una sessione persistente con i dati che tu scegli.
Mi spiego meglio: dopo il login voglio che il cognome di Tizio rimanga in sessione, e voglio richiamarlo sempre tramite Yii::app()->user->cognome.
Come fare?
Così:
$this->setState(‘cognome’, $record->cognome);
dove $this fa riferimento alla classe CUserIdentity.
Trovi un esempio qui: http://www.yiiframework.com/doc/guide/1.1/en/topics.auth
Non capisco $this->setState(‘cognome’, $record->cognome); dove andrebbe messo?
Diegovl
(Diego Viola1)
August 2, 2011, 2:59pm
4
Ti consiglio di guardarti il link che ti ho postato, capirai tutto da li.
Ti ricopio l’esempio:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$record=User::model()->findByAttributes(array('username'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id;
$this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
Vash
(Angelvash88)
August 2, 2011, 3:26pm
5
Diegovl:
Ti consiglio di guardarti il link che ti ho postato, capirai tutto da li.
Ti ricopio l’esempio:
class UserIdentity extends CUserIdentity
{
private $_id;
public function authenticate()
{
$record=User::model()->findByAttributes(array('username'=>$this->username));
if($record===null)
$this->errorCode=self::ERROR_USERNAME_INVALID;
else if($record->password!==md5($this->password))
$this->errorCode=self::ERROR_PASSWORD_INVALID;
else
{
$this->_id=$record->id;
$this->setState('title', $record->title);
$this->errorCode=self::ERROR_NONE;
}
return !$this->errorCode;
}
public function getId()
{
return $this->_id;
}
}
Ho seguito la guida ma mi da un errore allego uno stamp1912
Vash
(Angelvash88)
August 3, 2011, 9:48am
6
Ho creato all’interno del model/Profile.php una funzione
public function getCognome()
{
$prova= $this->Cognome;
return '$prova';
}
e la richiamo dal main.php con
echo Profile::getCognome();
ma mi dice
La proprietà "UserController"."Cognome" non è definita.
come faccio quindi ad estrarre il cognome e a visualizzarmelo nel main?
markux
(Marco Patania)
August 4, 2011, 7:40am
7
a volte può essere utile capire cosa si sta facendo, ma anche no
zaccaria
(Matteo Falsitta)
August 4, 2011, 8:59am
8
Devi capire cosa sono gli oggetti che hai in mano quando programmi.
Per avere una panoramica su cosa sono e cosa fanno gli oggetti del framework. leggi questo articolo.
$this rappresenta l’oggetto attuale, in un controller o in una view e’ il controller attuale, in un model e’ l’istanza attuale del model.
Se vuoi aggiungere una proprieta’ a Yii::app()->user segui questo tutorial.