Search code examples
phpyii2gii

YII2.0 Register form Class 'Users' does not exist or has syntax error


I have Users model in my model folder, i have to create a new registration form via gii, so that i gave my class name in form creation gii page.

But it throw the class name not exist or has syntax error.

Users.php code is

namespace app\models;
use Yii;
use yii\base\NotSupportedException;
use yii\db\ActiveRecord;
use yii\helpers\Security;
use yii\web\IdentityInterface;

/**
 * This is the model class for table "users".
 *
 * @property integer $id
 * @property string $username
 * @property string $password
 * @property integer $user_type
 */

class Users extends \yii\db\ActiveRecord implements IdentityInterface
{
/**
 * @inheritdoc
 */
public static function tableName()
{
    return 'users';
}

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['username', 'password', 'user_type'], 'required'],
        [['user_type'], 'integer'],
        [['username', 'password','auth_key'], 'string', 'max' => 255]
    ];
}

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

/** INCLUDE USER LOGIN VALIDATION FUNCTIONS**/
/**
 * @inheritdoc
 */
public static function findIdentity($id)
{
    return static::findOne($id);
}

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

/* removed
    public static function findIdentityByAccessToken($token)
    {
        throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
    }
*/
/**
 * Finds user by username
 *
 * @param  string      $username
 * @return static|null
 */
public static function findByUsername($username)
{
    return static::findOne(['username' => $username]);
}

/**
 * Finds user by password reset token
 *
 * @param  string      $token password reset token
 * @return static|null
 */
public static function findByPasswordResetToken($token)
{
    $expire = \Yii::$app->params['user.passwordResetTokenExpire'];
    $parts = explode('_', $token);
    $timestamp = (int) end($parts);
    if ($timestamp + $expire < time()) {
        // token expired
        return null;
    }

    return static::findOne([
        'password_reset_token' => $token
    ]);
}

/**
 * @inheritdoc
 */
public function getId()
{
    return $this->getPrimaryKey();
}

/**
 * @inheritdoc
 */
public function getAuthKey()
{
    return $this->auth_key;
}

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

/**
 * Validates password
 *
 * @param  string  $password password to validate
 * @return boolean if password provided is valid for current user
 */
public function validatePassword($password)
{
    //return $this->password === sha1($password);
    return $this->password === $password;
}

/**
 * Generates password hash from password and sets it to the model
 *
 * @param string $password
 */
public function setPassword($password)
{
    $this->password_hash = Security::generatePasswordHash($password);
}

/**
 * Generates "remember me" authentication key
 */
public function generateAuthKey()
{
    $this->auth_key = Security::generateRandomKey();
}

/**
 * Generates new password reset token
 */
public function generatePasswordResetToken()
{
    $this->password_reset_token = Security::generateRandomKey() . '_' . time();
}

/**
 * Removes password reset token
 */
public function removePasswordResetToken()
{
    $this->password_reset_token = null;
}
/** EXTENSION MOVIE **/
}

May i know what is the issue on that, screen for your better understanding. enter image description here


Solution

  • You have to use proper syntax for your Model class path. You can find the proper format of path by hovering the "Model Class" field. You have to use Model Class path as "app\models\Users".

    Try this once and let me know if you still face any query/concern for the same.