Задать вопрос
@webquestions

Как сохранить данные в Yii c формы?

$model->save();
не отрабатывает
  • Вопрос задан
  • 529 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
Порядок действий такой должен быть в форме делаете функцию. Можете присвоить значения свои ручками, но закидывать админа и тест луче через миграции.
public function signup()
    {
        if ($this->validate()) {
            $user = new User();
            $user->username = $this->username; 
            $user->email = $this->email;
            $user->setPassword($this->password);
            $user->generateAuthKey();

            if ($user->save()) {
                   // тут можно закинуть отправку токена на мыло
            }
            return $user; // это отправка будет на ваш экшн
        }
        return null;
    }


в контроллере
public function actionSignup()
    {
        $model = new SignupForm(); // создается форма что выше
        if ($model->load(Yii::$app->request->post())) { // грузит модель из суперглобалки ПОСТ
            if ($user = $model->signup()) { // создается юзер используется функция из формы
                Yii::$app->getSession()->setFlash('success', 'Регистрация успешна'); // всплывающее сообщение 
                return $this->goHome(); //возврат на домашку
            }
        }

        return $this->render('signup', [
            'model' => $model,
        ]);
    }


А функция model->save(); Зажмите в вашем IDE контрл и кликните по функции сэйв, посмотрите как он устроен. Это обыкновенная вставка INSERT.

В Юзерах вы создаете массив данных, а не объект. Как минимум в юзере нужно функцию, которая этот массив передавала бы вам. и в контроллере вы бы использовали что-то вроде
$model = New User();
$model->username = $arrayUser['100']['username']
$model->email = $arrayUser['100']['email']
$model->setPassword($arrayUser['100']['password']);
$model->save();
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы