Ошибка PHP Recoverable Error

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
sham63
Сообщения: 62
Зарегистрирован: 2017.10.07, 17:38

Ошибка PHP Recoverable Error

Сообщение sham63 » 2017.10.19, 21:00

Код: Выделить всё

<?php

namespace common\models;

use Yii;
use yii\db\ActiveRecord;
use yii\web\IdentityInterface;

/**
 * This is the model class for table "Myuser".
 *
 * @property integer $id
 * @property string $username
 * @property string $password
 * @property string $hesh
 */
class Myuser extends ActiveRecord implements IdentityInterface
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'Myuser';
    }




    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['username'], 'string', 'max' => 150],
            [['password', 'hesh'], 'string', 'max' => 250],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'username' => 'Username',
            'password' => 'Password',
            'hesh' => 'Hesh',
        ];
    }


    public static function findIdentity($id)
    {
        return static::findOne($id);
    }

    public static function findIdentityByAccessToken($token, $type = null)
    {
       /* return static::findOne(['access_token' => $token]);*/
    }

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

     public function getAuthKey()
    {
        return $this->auth_key;
    }

    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }

    public static function findByUsername($username)
    {
        return static::findOne(['username' => $username]);
    }


}

Код: Выделить всё

<?php
namespace common\models;

use Yii;
use yii\base\Model;

class Mylogin extends Model
{


public $username;
    public $password;

    private $_user;

	public function rules()
	    {
	        return [
	            // username and password are both required
	            [['username', 'password'], 'required'],
	        ];
	    }

    public function attributeLabels(){
        return [
            
            'username' => 'Логин',
            'password' => 'Пароль',
            
        ];
    }


	public function login()
    {
        if ($this->validate()) {
            return Yii::$app->user->login($this->getUser(),0);
        } else {
            return false;
        }
    }


    protected function getUser()
    {
        if ($this->_user === null) {
            $this->_user = Myuser::findByUsername($this->username);
        }

        return $this->_user;
    }


}


?>
Контроллер

Код: Выделить всё

public function actionAutoform(){
        if (!Yii::$app->user->isGuest) {
            return $this->goHome();
        }

        $model = new Mylogin();
        //return $this->render('autoform',['model'=>$model]);
        if ($model->load(Yii::$app->request->post()) && $model->login()) {
            return $this->goBack();
        }
        else 
        {
            return $this->render('autoform',['model'=>$model]);
        }

    }
Выдает ошибку

Код: Выделить всё

Argument 1 passed to yii\web\User::login() must implement interface yii\web\IdentityInterface, null given, called in C:\WebServer\OpenServer\domains\billing\common\models\Mylogin.php on line 37 and defined
Вроде же IdentityInterface реализован , где ошибка не могу понять :(

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Ошибка PHP Recoverable Error

Сообщение zelenin » 2017.10.19, 21:48

sham63 писал(а):
2017.10.19, 21:00
Вроде же IdentityInterface реализован , где ошибка не могу понять :(
вам же пишут - null given.

Аватара пользователя
Haku
Сообщения: 56
Зарегистрирован: 2015.03.11, 07:39

Re: Ошибка PHP Recoverable Error

Сообщение Haku » 2017.10.19, 21:51

В тексте ошибки написано, что у вас в метод User::login(), который вызывается в модели Mylogin, в аргументе передаётся "null". Я предположу, что это происходит из-за того, что пользователь, под которым вы пытаетесь авторизоваться, отсутствует в базе данных.

sham63
Сообщения: 62
Зарегистрирован: 2017.10.07, 17:38

Re: Ошибка PHP Recoverable Error

Сообщение sham63 » 2017.10.20, 13:55

Haku писал(а):
2017.10.19, 21:51
В тексте ошибки написано, что у вас в метод User::login(), который вызывается в модели Mylogin, в аргументе передаётся "null". Я предположу, что это происходит из-за того, что пользователь, под которым вы пытаетесь авторизоваться, отсутствует в базе данных.
Просто если вводить не правильно пароль , тоже самое пишет

zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Ошибка PHP Recoverable Error

Сообщение zelenin » 2017.10.20, 13:57

sham63 писал(а):
2017.10.20, 13:55
Haku писал(а):
2017.10.19, 21:51
В тексте ошибки написано, что у вас в метод User::login(), который вызывается в модели Mylogin, в аргументе передаётся "null". Я предположу, что это происходит из-за того, что пользователь, под которым вы пытаетесь авторизоваться, отсутствует в базе данных.
Просто если вводить не правильно пароль , тоже самое пишет
вам сказали в чем проблема - дальше решайте ее.

Ответить