Данные с формы возвращают null

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Kazzi
Сообщения: 63
Зарегистрирован: 2020.05.05, 19:23

Данные с формы возвращают null

Сообщение Kazzi »

Всем добра!

В общем вот такая загвоздка( Пишу регистрацию пользователей. и сразу же наткнулся на вот такую лажу. При отправке данных с формы они не проходят валидацию.

Вот модель:

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

<?
 
namespace app\models;
 
use yii\base\Model;
 
 
/**
*
*/
class SignupForm extends Model
{
    public $username;
    public $password;
 
    public function rules()
    {
        return [
            [['username', 'password'], 'required'],
        ];
    }
 
 
    public function attributeLabels()
    {
        return [
            'username' => 'login',
            'password' => 'Password',
        ];
    }
}
Вот акшон контроллера:

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

public function actionSignup()
    {
        if (!Yii::$app->user->isGuest) {
            return $this->goHome();
        }
 
        $model = new SignupForm();
 
        if($model->load(Yii::$app->request->post()) && $modal->validate()){
         
            $user = new User;
            $user->username = $model->username;
            $user->password = \Yii::$app->security->generatePasswordHash($model->password);
         
            if($user->save()){
                Yii::$app->user->login($user);
                return $this->goHome();
            }
        }
 
        return $this->render('signup', compact('model'));
    }
Вот вьюха формы:

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

<?
 
use yii\helpers\Html;
use yii\bootstrap4\ActiveForm;
 
?>
<div class="row">
    <div class="col-gl-4 mx-auto">
        <? $form = ActiveForm::begin(); ?>
 
            <?= $form->field($model, 'username'); ?>
            <?= $form->field($model, 'password')->passwordInput(); ?>
 
            <div class="form-group">
                <div class="col-lg-offset-1 col-lg-11">
                    <?= Html::submitButton('Singup', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
                </div>
            </div>
        <? ActiveForm::end(); ?>
    </div>
</div>
И вот гребаная ошибка((((

Call to a member function validate() on null и указывает на строку, где fi с валидацией.

Подскажите пожалуйста, что не так? :(
gerzog1995
Сообщения: 29
Зарегистрирован: 2018.07.29, 21:07

Re: Данные с формы возвращают null

Сообщение gerzog1995 »

В ошибке написано всё. Не найден метод validate() в объекте. Соотвественно задаемься вопросом почему? Смотрим на $modal->validate() и видим там объект $modal, смотрим где инициализируется класс объекта и видим что нигде. Есть только инициализация $model, вот $model = new SignupForm(); Делаем вывод, что опечатка, надо было $model, а не $modal
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Данные с формы возвращают null

Сообщение unknownby »

А еще хорошо бы прописать в rules не только обязательность, но и что это такие за поля.
Что вводится в username, а что в password. Вариант, что username должно быть уникальным, а пароль содержать в себе от 8 символов, где 1-2 спецсимвола, минимум 1 большая буква. :D
Prooksius
Сообщения: 100
Зарегистрирован: 2019.01.17, 23:24

Re: Данные с формы возвращают null

Сообщение Prooksius »

Кстати, вот статейка интересная, Просмотр и редактирование профиля. Мне очень помогло, когда делал личный кабинет на сайте с регистрацией/авторизацией.
Ответить