2011-12-21 23 views

Trả lời

8

bạn nên có getId chức năng trong sử dụng nhận dạng

+2

Như đã đề cập ở trên, bạn cần triển khai getId() trong lớp nhận dạng của bạn. Giải thích của nó ở đây: http://www.yiiframework.com/doc/guide/1.1/en/topics.auth#defining-identity-class –

9

Yii :: app() -> user trả về một CWebUser thành phần theo mặc định.

Khi bạn muốn nhận thêm một số thông tin về người dùng, bạn cần mở rộng thành phần này.

Tạo tệp WebUser.php trong thư mục components của bạn. (Ví dụ của tôi dưới đây)

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

Trong tập tin cấu hình của bạn tìm thấy phần

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

nếu không có phần này, chỉ cần tạo ra nó. Và thay đổi 'class' => thành WebUser '.

+0

tại sao chúng ta sử dụng 'components' => array ( ''user' => mảng ( 'class' => 'WebUser' ) ) '? Để thêm các lớp bổ sung? – Symfony

+0

@Riaz để mở rộng hành vi của CWebUser – RusAlex

+0

@RiazKhan: Để cho Yii biết rằng nó sẽ tạo một cá thể của lớp 'WebUser' của riêng bạn (cung cấp chức năng bổ sung này) thay vì' CWebUser' được tích hợp sẵn. – Jon

1

Sử dụng getId chức năng trong Component/Useridentity để có được id người dùng và tên vv ..

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

Hoặc bạn có thể sử dụng 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

nếu bạn muốn hiển thị nó trên một chế độ xem, điều này nên làm:

echo Yii::$app->user->id; 
Các vấn đề liên quan