Cannot make non static method yii\base\Model::rules() static in class app\models\User

222
29 июня 2018, 15:50

помогите пожалуйста, при входе на страницу регистрации выходит ошибка:

Cannot make non static method yii\base\Model::rules() static in class app\models\User

1. in /var/www/u0498223/public_html/coinfactory.pw/models/User.php at line 20
11121314151617181920212223242526272829
                     * @property string $username
 * @property string $email
 * @property string $password_hash
 * @property integer $status
 * @property string $auth_key
 * @property integer $created_at
 * @property integer $updated_at
 */
class User extends \yii\db\ActiveRecord
{
    const STATUS_DELETED = 0;
    const STATUS_NOT_ACTIVE = 1;
    const STATUS_ACTIVE = 10;
    public $password;

    /**
     * @inheritdoc

2. yii\base\ErrorHandler::handleFatalError()

В чём может быть проблема?

User.php

<?php
namespace app\models;
use Yii;
/**
* User model
*
* @property integer $id
* @property string $username
* @property string $email
* @property string $password_hash
* @property integer $status
* @property string $auth_key
* @property integer $created_at
* @property integer $updated_at
*/
class User extends \yii\db\ActiveRecord
{
const STATUS_DELETED = 0;
const STATUS_NOT_ACTIVE = 1;
const STATUS_ACTIVE = 10;
public $password;

/**
 * @inheritdoc
 */
public static function tableName()
{
    return '{{%user}}';
}
/**
 * @inheritdoc
 */
public static function rules()
{
    return [
        [['username', 'email', 'password'], 'filter', 'filter' => 'trim'],
        [['username', 'email', 'status'], 'required'],
        ['email', 'email'],
        ['username', 'string', 'min' => 2, 'max' => 255],
        ['password', 'required', 'on' => 'create'],
        ['username', 'unique', 'message' => 'Это имя занято.'],
        ['email', 'unique', 'message' => 'Эта почта уже зарегистрирована.']
    ];
}
/**
 * @inheritdoc
 */
public static function attributeLabels()
{
    return [
        'id' => 'ID',
        'username' => 'Username',
        'email' => 'Email',
        'password' => 'Password Hash',
        'status' => 'Status',
        'auth_key' => 'Auth Key',
        'created_at' => 'Created At',
        'updated_at' => 'Updated At',
    ];
}
}

RegForm.php

<?php
namespace app\models;
use yii\base\Model;
use Yii;
class RegForm extends Model 
{
public $username;
public $email;
public $password;
public $status;
public function rules()
{
    return[
        [['username', 'email', 'password'], 'filter', 'filter' => 'trim'],
        [['username', 'email', 'password'], 'required'],
        ['username', 'string', 'min' => 2, 'max' => 255],
        ['username', 'unique',
            'targetClass' => User::className(),
            'message' => 'Это имя уже занято.'],
        ['email', 'email'],
        ['email', 'unique',
            'targetClass' => User::className(),
            'message' => 'Это почта уже занята.'],
        ['status', 'default', 'value' => User::STATUS_ACTIVE, 'on' => 'default'],
        ['status', 'in', 'range' =>[
            User::STATUS_NOT_ACTIVE,
            User::STATUS_ACTIVE
        ]],
    ];
}
public function attributeLabels()
{
    return[
        'username' => 'Имя пользователя',
        'email' => 'Эл. почта',
        'password' => 'Пароль'
    ];
}
public function reg()
{
    return true;
}
}

LoginForm.php

<?php
namespace app\models;
use yii\base\Model;
use Yii;
class LoginForm extends Model 
{
public $username;
public $password;
public $email;
public $rememberMe = true;
public $status;
public function rules()
{
    return[
        [['username', 'password'], 'required', 'on' => 'default'],
        ['email', 'email'],
        ['rememberMe', 'boolean'],
        ['password', 'validatePassword']
    ];
}
public function validatePassword($attribute)
{
}
public function attributeLabels()
{
    return[
        'username' => 'Имя пользователя',
        'password' => 'Пароль',
        'rememberMe' => 'Запомнить меня'
    ];
}
public function login() {
    return true;
}
}

reg.php

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model app\models\RegForm */
/* @var $form ActiveForm */
?>
<div class="user-reg">
    <?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'username') ?>
    <?= $form->field($model, 'email') ?>
    <?= $form->field($model, 'password')->passwordInput() ?>
    <div class="form-group">
        <?= Html::submitButton('Регистрация', ['class' => 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>

login.php

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
/* @var $this yii\web\View */
/* @var $model app\models\LoginForm */
/* @var $form ActiveForm */
?>
<div class="user-login">
<?php $form = ActiveForm::begin(); ?>
    <?= $form->field($model, 'username') ?>
    <?= $form->field($model, 'password')->passwordInput() ?>
    <?= $form->field($model, 'rememberMe')->checkbox() ?>
    <div class="form-group">
        <?= Html::submitButton('Войти', ['class' => 'btn btn-primary']) ?>
    </div>
<?php ActiveForm::end(); ?>
 <p class="text-center" id="already">
        <a href="<?= \yii\helpers\Url::to(['/user/reg'])?>">Еще не зарегистрировались? Зарегистрируйтесь!</a>
</p>

Answer 1

В user.php уберите static с rules

/**
 * @inheritdoc
 */
public function rules()
{
    return [
        [['username', 'email', 'password'], 'filter', 'filter' => 'trim'],
        [['username', 'email', 'status'], 'required'],
        ['email', 'email'],
        ['username', 'string', 'min' => 2, 'max' => 255],
        ['password', 'required', 'on' => 'create'],
        ['username', 'unique', 'message' => 'Это имя занято.'],
        ['email', 'unique', 'message' => 'Эта почта уже зарегистрирована.']
    ];
}
READ ALSO
как удалить значение поля в таблице mysql если заранее не известно в каком именно поле оно хранится

как удалить значение поля в таблице mysql если заранее не известно в каком именно поле оно хранится

имеется таблица mysql со столбцами id1 id2 id3 в одном из них есть значение userid, как удалить значение userid из ячейки столбца если заранее не известно...

141
Как вывести ошибки нескольких интупов с типом file в laravel?

Как вывести ошибки нескольких интупов с типом file в laravel?

У меня есть от 1 до 10 <input name="photo[]" type="file">"

191
Mysql выборка по числам через запятую

Mysql выборка по числам через запятую

Допустим есть таблица новостей, в ней поле category (varchar)Категорий может быть несколько, и это выглядит так:

197
Как вывести все строки в MySql

Как вывести все строки в MySql

ДД, Вывожу товар, по артиклу, дуелаю запрос в бд на пхп, вывожу:

156