Yii Framework Forum: Das Userobjekt - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Das Userobjekt Wo isses denn? Rate Topic: -----

#1 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 11 August 2009 - 07:40 AM

Heho,

Ich habe jetzt den Login mal auf Datenbank umgestellt was soweit auch ganz gut klappt, nur habe ich jetz
das Problem das ich nicht weis wie ich jetzt wieder an meine userobject rankomm.
Damit habe ich es schon probiert:

var_dump(Yii::app()->user);

Da kommt aber nix brauchbares bei raus:

object(CWebUser)#11 (10) { ["allowAutoLogin"]=> bool(true) ["guestName"]=> string(5) "Guest" ["loginUrl"]=> array(1) { [0]=> string(10) "site/login" } ["identityCookie"]=> NULL ["_keyPrefix:private"]=> string(32) "f8c9490e44dc8d3d4328fabf9c3aa4bb" ["_access:private"]=> array(0) { } ["behaviors"]=> array(0) { } ["_initialized:private"]=> bool(true) ["_e:private"]=> NULL ["_m:private"]=> NULL }

Das bekomme ich aus dem var_dump, egal ob ich eingeloggt bin oder nicht.
Kann mir mal wer auf die sprünge helfen?
0

#2 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 11 August 2009 - 08:21 AM

Yii::app()->user liefert dir das CWebUser-Objekt zum aktuellen User zurück. Das ist aber was anderes, als dein User-Datensatz in der DB. Der wurde ja nur von UserIdentity zur Authentifizierung verwendet. Falls Yii::app()->user->id gesetzt ist, kannst du dir damit den zugehörigen DB-User (ein AR dazu hast du ja sicher) mit User::model()->findByPk() holen.

Meintest du das?
0

#3 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 11 August 2009 - 11:40 AM

Ja ok so komme ich an den Datensatz, wo platziert man denn in Yii am günstigsten eine methode
getCurrentUser ala Rails? Also so das sie in jedem Controller/View abrufbar ist?
0

#4 User is offline   mbi 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 608
  • Joined: 08-May 09

Posted 11 August 2009 - 02:48 PM

View Postsebi, on 11 August 2009 - 11:40 AM, said:

Ja ok so komme ich an den Datensatz, wo platziert man denn in Yii am günstigsten eine methode
getCurrentUser ala Rails? Also so das sie in jedem Controller/View abrufbar ist?


was macht denn getCurrentUser in Rails?
0

#5 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 11 August 2009 - 04:03 PM

Genau das was Mike schon vorgeschlagen hatte:

# returns current user by session
def getCurrentUser
if session[:user_id] != nil
@current_user ||= User.find(session[:user_id])
else
@current_user
end
end

in Yii sollte das dann in etwa so aussehen:

public function getCurrentUser()
{
   return User::model()->findByPk(Yii::app()->user->id)
}


nur wo platziere ich die action damit ich sie von jedem punkt in der Application aufrufen kann?
In Rails hatte ich die immer in meinem AuthController welcher vom ApplicationController geerbt hat,
damit war sie im höchsten Punkt der Vererbungskette und somit überall verfügbar.
0

#6 User is offline   mbi 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 608
  • Joined: 08-May 09

Posted 11 August 2009 - 04:58 PM

View Postsebi, on 11 August 2009 - 04:03 PM, said:

nur wo platziere ich die action damit ich sie von jedem punkt in der Application aufrufen kann?


wie wärs denn mit der UserIdentity selber? dort lädst du doch schon den User-Datensatz, den kannst du doch dort als property ablegen?
0

#7 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 11 August 2009 - 05:05 PM

*kopf* -> *wand*
Stimmt hätte ich auch selbst drauf kommen können, naja yii fühlt sich noch ein wenig fremd an, muss erstmal
schauen was hier anders ist als bei Rails, soviel ist das aber gar nicht ;)
0

#8 User is offline   Mike 

  • Elite Member
  • PipPipPipPipPip
  • Yii
  • Group: Members
  • Posts: 3,016
  • Joined: 06-October 08
  • Location:Upper Palatinate

Posted 12 August 2009 - 02:50 AM

Ich hab das in einem Projekt in meine eigene Userklasse gelegt:

class WebUser extends CWebUser {
     public function getCurrentUser() {
 ...


und diesen in der main.php konfiguriert:

return array(
      'components' => array(
          'user' => array(
              'class' =>'WebUser'
          ),
  ...


Damit kannst du den Datensatz überall mit Yii::app()->user->CurrentUser abrufen.
0

#9 User is offline   sebi 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 65
  • Joined: 06-October 08

Posted 12 August 2009 - 06:18 AM

Ah Ok das sieht Gut aus, so werde ich das dann auch mal in Angriff nehmen.
Danke.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users