Почему в базу падает пустое значение?

Есть форма, с нее должны отправляться данные в базу.
View:
<?php $form = ActiveForm::begin();
        ?>
        <?= $form->field($registrationModel, 'login'); ?>
        <?= $form->field($registrationModel, 'password')->passwordInput(); ?>
        <?= $form->field($registrationModel, 'role')->dropDownList(['manager' => 'Менеджер', 'user' => 'Исполнитель']); ?>
        <div class="form-group">
            <div class="">
                <?= Html::submitButton('Создать', ['class' => 'btn btn-primary']); ?>
            </div>
        </div>
        <?php ActiveForm::end(); ?>

Model:
<?php

namespace app\models;


use yii\db\ActiveRecord;


class RegistrationModel extends ActiveRecord
{
    public $login;
    public $password;
    public $role;

    public static function tableName()
    {
        return 'users';
    }

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

    public function attributeLabels()
    {
        return [
            'login' => 'Логин',
            'password' => 'Пароль',
            'role' => 'Роль пользователя',
        ];
    }

    public function createAccount()
    {
        $postData = $_POST['RegistrationModel'];
        $this->login = $postData['login'];
        $this->password = $postData['password'];
        $this->role = $postData['role'];
        $this->save();
    }

}


Controller:
<?php

namespace app\controllers;


use app\models\RegistrationModel;
use yii\web\Controller;
use Yii;

class RegistrationController extends Controller
{

    public function actionView()
    {

        $registrationModel = new RegistrationModel();
        if( $registrationModel->load( Yii::$app->request->post() ) && $registrationModel->createAccount() ){
            Yii::$app->session->getFlash('successRegistration', 'Пользователь успешно создан');
        }
        return $this->render('view', compact(['registrationModel', 'postData']));
    }

}

Я уже пробовал записывать просто строки вместо $_POST, все равно в базу записывается только дефолтное значение select`а
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Потому, что вот это надо удалить.
public function createAccount()
    {
        $postData = $_POST['RegistrationModel'];
        $this->login = $postData['login'];
        $this->password = $postData['password'];
        $this->role = $postData['role'];
        $this->save();
    }

И написать так:
public function actionCreate()
    {
        $registrationModel = new RegistrationModel();
        if( $registrationModel->load( Yii::$app->request->post() ) && $registrationModel->save() ){
            Yii::$app->session->getFlash('successRegistration', 'Пользователь успешно создан');
            return $this->redirect(['view', 'id' => $registrationModel->id])
        }
        return $this->render('create',  ['registrationModel' => $registrationModel]);
    }

Но это только просто запись в базу. Если Вы хотите сделать нормально регистрацию - надо переделывать всё.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы