Wpis z mikrobloga

proboje zrobic logowanie w yii2 i mam pewien problem a mianowicie w linijce, jestem nowy w php jak i w yii2

_return Yii::$app->user->login($this->getUser(), $this->rememberMe ? 3600 * 24 * 30 : 0);

php wyswietla mi komunikat

,,Expected yii\web\IdentityInterface, got array |bool|\yii\db\ActiveRecord
Invocation parameters types are not compatible with declared"

$this->getUser() zwraca mi obiekt klasy ActiveRecord w której implementuje interface IdentityInterface wiec chyba powinno byc spoko
w main php
['label' => 'Login', 'url' => ['/site/login']] :
['label' => 'Logout (' . Yii::$app->user->identity->username . ')',

Feld 'username' not found in class null|yii\web\IdentityInterface
Referenced field is not found in subject class. Note: Check is not performed on objects of type "stdClass" or derived._

http://pastebin.com/MrMSX5zm

#programowanie #php #phpstorm #yii #webdev
  • 37
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@ExtendedConsciousness: przeczytaj sobie opis getAuthKey() w IdentityInterface. Tak patrzę na ten kod i zastanawiam się czy przypadkiem podajesz odpowiednie username, bo w findByUsername nie zwracasz niczego jeśli się nie zgadza z wpisanym w bazie...
  • Odpowiedz
@Bizley:
tutaj bylo to zrobione dla domyslnej klasy User.
Ja stwozyłem swoją klasę Users która jest klasą rozszerzoną ActiveRecordem i implementującą IndentityInterface
wiec musiałem zmienic z
'identityClass' =>
  • Odpowiedz
@ExtendedConsciousness: właśnie tak jest w advanced :) zobacz tutaj https://github.com/yiisoft/yii2-app-advanced/blob/master/common/models/User.php W sumie jak dla mnie strzelili sobie trochę w stopę tym wydaniem podstaw projektu w wersjach basic i advanced. W basic brakuje wielu potrzebnych rzeczy, a advanced ma ich aż za dużo. Oczywiście każdy domorosły programista Yii od razu zabiera się za advanced, a potem wypisują kwiatki na forum...
  • Odpowiedz