Кроме AI в БД ничего не сохраняется.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
Mike Wazovsky
Сообщения: 3
Зарегистрирован: 2017.03.06, 11:39

Кроме AI в БД ничего не сохраняется.

Сообщение Mike Wazovsky »

Здравствуйте!
YII только начал пользоваться. Почитал документацию и решил состряпать простенький сайт с регистрацией. Сейчас уперся в то что на выходе получается что в базу данных сохраняется только auto increment. Подскажите в чём моя ошибка.

Это контроллер:

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

<?php

namespace app\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;
use app\models\Userser;

class SiteController extends Controller
{
........
public function actionRegistration()
    {
        $forma = new User();
        if($forma->load(Yii::$app->request->post()) && $fora->validate())
        {
            $forma->save();
            return $this->render('profile', ['forma'=>$forma]);
        }    
        else{
        return $this->render('registration', ['forma'=>$forma]);}
    }
}
Это модель:

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

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Infouser extends ActiveRecord
{
    public $email;
    public $login;
    public $password;
    public $password_repeat;
    
    public function rules()
    {
        return[
            ['email', 'required', 'message'=>'Не заполнено'],
            ['email', 'email', 'message'=>'Некорректно'],
            ['email', 'unique', 'targetClass'=>'app\models\Infouser'],
            ['login', 'required', 'message'=>'Не заполнено'],
            ['login', 'unique', 'targetClass'=>'app\models\Infouser'],
            ['password', 'required', 'message'=>'Не заполнено'],
            ['password_repeat', 'required', 'message'=>'Не заполнено'],
            ['password_repeat', 'compare', 'compareAttribute'=>'password', 'message'=>'Не совпадает'],
        ];
    }
    
    public function attributeLabels()
    {
        return
        [
            'email'=>'E-mail',
            'login'=>'Логин',
            'password'=>'Пароль',
            'password_repeat'=>'Повторите пароль',
        ];
    }
}
Это вид:

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

<?php

use yii\helpers\Html;
use yii\widgets\ActiveForm;

$this->title = 'Регистрация';
?>
<?php $pole = ActiveForm::begin(['id'=>'User', 'options'=>['class'=>'form-horizontal'],]); ?>
<h2><?= Html::encode($this->title) ?></h2>
    <?= $pole->field($formreg, 'email')->textInput(['autofocus'=>true]) ?>
    <?= $pole->field($formreg, 'login') ?>
    <?= $pole->field($formreg, 'password')->input('password') ?>
    <?= $pole->field($formreg, 'password_repeat')->input('password') ?>

    <?= Html::submitButton('Зарегистрироваться', ['class'=>'btn btn-primary']) ?>
<?php ActiveForm::end(); ?>
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Кроме AI в БД ничего не сохраняется.

Сообщение caHek2x »

эм где логика ...
модель:
class Infouser extends ActiveRecord
в контроллере
$forma = new User();
upd:
и еще
$forma = new User();
if($forma->load(Yii::$app->request->post()) && $fora->validate())
и если вы делаете validate то в save передавайте false чтоб второй раз не делать тоже самое ...

upd:
и еще вы гдето нам врете ...
в виев вы передаваете
return $this->render('registration', ['forma'=>$forma]);}
но в форме вы используете
<?= $pole->field($formreg, 'password_repeat')->input('password') ?>
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Кроме AI в БД ничего не сохраняется.

Сообщение Onotole »

В ActiveRecord модели не нужно объявлять свойства. Читайте документацию
Mike Wazovsky
Сообщения: 3
Зарегистрирован: 2017.03.06, 11:39

Re: Кроме AI в БД ничего не сохраняется.

Сообщение Mike Wazovsky »

Не хотел никого обманывать, просто свои мутные названия перевёл на понятный язык, только местами недоглядел. Пробовал false в save всё остается по прежнему. Начал перечитывать документацию. Но ответа так и не нашёл. Раскройте мне глаза пожалуйста.
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Кроме AI в БД ничего не сохраняется.

Сообщение maleks »

Mike Wazovsky писал(а): 2017.03.08, 08:19 Раскройте мне глаза пожалуйста.
Вот это уберите:

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

    public $email;
    public $login;
    public $password;
Св-ва берутся из имен столбцов.
Mike Wazovsky
Сообщения: 3
Зарегистрирован: 2017.03.06, 11:39

Re: Кроме AI в БД ничего не сохраняется.

Сообщение Mike Wazovsky »

Всё заработало. Круто. Большое Спасибо.
Закрыто