Yii::app()->user->name extender

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

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?

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

Schermata 08-2455776 alle 17.25.04.png

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?

a volte può essere utile capire cosa si sta facendo, ma anche no

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.