2011-12-21 20 views

Respuesta

8

usted debe tener una función en la identidad del usuario getId

+2

Como se mencionó anteriormente, debe implementar getId() en su clase de identidad. Se explica aquí: http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#defining-identity-class –

9

Yii :: aplicación() -> usuario devuelve un CWebUser componente por defecto.

Cuando desee obtener información adicional acerca del usuario, debe extender este componente.

Cree un archivo WebUser.php en su carpeta components. (Mi ejemplo a continuación)

class WebUser extends CWebUser { 
    /** 
    * Gets the FullName of user 
    * 
    * @return string 
    */ 
    public function getFullName() 
    { 
     return $this->_model->first_name . ' ' .$this->_model->last_name; 
    } 
} 

En su sección hallazgo archivo de configuración

'components'=>array(
'user'=>array(
'class'=>'WebUser' 
) 
) 

si no hay esta sección, simplemente crearlo. Y cambie 'clase' => a WebUser '.

+0

por qué usamos 'components' => array ( ''user' => array ( 'class' => 'WebUser' ) ) '? Para agregar clases adicionales? – Symfony

+0

@Riaz para extender comportamientos de CWebUser – RusAlex

+0

@RiazKhan: decirle a Yii que debe crear una instancia de su propia clase 'WebUser' (que proporciona esta funcionalidad adicional) en lugar del' CWebUser' incorporado. – Jon

1

Uso getId función en el componente/UserIdentity para obtener identificador de usuario y el nombre etc ..

class UserIdentity extends CUserIdentity 
    { 

      private $_id; 
     public function authenticate() 
     { 
      $users=Users::model()->find("email_id='$this->username'");     

      $this->_id=$users->user_id; 

     } 

     public function getId(){ 
      return $this->_id; 

    } 
} 
2

O usted puede utilizar son setState:

class UserIdentity extends CUserIdentity 
{ 
    private $_id; 
    public function authenticate() 
    { 
     $record=Users::model()->findByAttributes(array('mail'=>$this->username)); 
     if($record===null) 
      $this->errorCode=self::ERROR_USERNAME_INVALID; 
     else if($record->password!==md5($this->password."325")) 
      $this->errorCode=self::ERROR_PASSWORD_INVALID; 
     else 
     { 
      $this->_id = $record->id; 
      $this->setState('role', $record->active); 
      $this->setState('mail', $record->mail); 
      $this->setState('name', $record->name); 
      $this->setState('surname', $record->surname); 
      $this->setState('mobile', $record->mobile); 
      $this->setState('adress', $record->adress); 
      $record->count_login += 1; 
      $record->update(); 
      $this->errorCode=self::ERROR_NONE; 
     } 
     return !$this->errorCode; 
    } 

    public function getId() 
    { 
     return $this->_id; 
    } 

} 


<?php echo Yii::app()->user->name." ".Yii::app()->user->surname; ?> 
0

si quieres mostrarlo en una vista Esto debería hacer:

echo Yii::$app->user->id; 
Cuestiones relacionadas