такая проблема: делаю регистрацию, при вводе данных в форму все время вылазит ошибка "Введите пароль еще раз" (хотя в массиве POST есть пароль) и в базе данных такая запись:Model not inserted due to validation error.
Двое суток уже не могу разобраться...подскажите!
поля в table users
id
login
password
question
answer
hash
active
acssess
вот код
модель
Код: Выделить всё
<?php
namespace app\models;
use yii\base\Model;
use yii\db\ActiveRecord;
use yii\db\Expression;
class RegisterForm extends ActiveRecord {
public static function tableName() {
return 'users';
}
public $password_repeat;
public $check;
public function attributeLabels() {
return [
'login' => 'Логин',
'email' => 'Email',
'password' => 'Введите пароль',
'password_repeat' => 'Введите пароль еще раз',
'question' => 'Секретный вопрос',
'answer' => 'Ответ на вопрос',
'check' => 'Я не робот',
];
}
public function rules() {
return [
[['login', 'email', 'password', 'password_repeat', 'question', 'answer', 'check',], required, 'message' =>'Заполните поле'],
['email', 'email'],
[['password'],'string', 'length' => [6,30]],
[['password_repeat'], 'compare', 'compareAttribute'=>'password', 'message'=>'Пароли не совпадают'],
[['login','answer'], 'string','length' => [4,30]],
];
}
public function validation ($res) {
if ($res != 1) {
return false;
}
}
}
?>
Код: Выделить всё
<?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\Pages;
use app\models\Products;
use app\models\ProductsImage;
use app\models\RegisterForm;
class SiteController extends AppController
{
public function actionRegistration() {
$model = new RegisterForm();
$this->setMeta('IKA | Регистрация');
$res = Yii::$app->request->post();
if (!empty($res)) {
$model->validation($res['RegisterForm']['check']);
$passwd = $res['RegisterForm']['password'];
$model->login = $res['RegisterForm']['login'];
$model->password = $passwd;
$model->email = $res['RegisterForm']['email'];
$model->question = $res['RegisterForm']['question'];
$model->answer = $res['RegisterForm']['answer'];
$model->hash = md5($res['RegisterForm']['password']. $res['RegisterForm']['email']. $res['RegisterForm']['login']);
$model->active = 0;
$model->acssess = 1;
echo $model->password_repeat;
debug($res['RegisterForm']);
if($model->save()) {
Yii::$app->session->setFlash('success', 'Поздравляем! Вы успешно зарегистрировались.');
return $this->refresh();
} else {
Yii::$app->session->setFlash('error', 'Ошибка регистрации!');
}
}
return $this->render('registration', compact('model'));
}
}
Код: Выделить всё
<?php
/* @var $this yii\web\View */
/* @var $form yii\bootstrap\ActiveForm */
/* @var $model app\models\LoginForm */
//use yii\helpers\Html;
//use yii\bootstrap\ActiveForm;
use yii\helpers\Html;
use yii\helpers\Url;
use yii\widgets\ActiveForm;
?>
<div class="container">
<?php if (Yii::$app->session->hasFlash('success')) { ?>
<div class="alert alert-success alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true"></span>×</button>
<?php echo Yii::$app->session->getFlash('success');?>
</div>
<?php } elseif (Yii::$app->session->hasFlash('error')) { ?>
<div class="alert alert-danger alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true"></span>×</button>
<?php echo Yii::$app->session->getFlash('error');?>
</div>
<?php } ?>
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'login')?>
<?= $form->field($model, 'email')->input('email') ?>
<?= $form->field($model, 'password')->passwordInput()?>
<?= $form->field($model, 'password_repeat')->passwordInput()?>
<?= $form->field($model, 'question')->dropDownList(['prompt' => 'Выберите вопрос', 'Любимое блюдо', 'Имя животного', 'Девичья фамилия матери', 'Любимый вид спорта', 'Марка автомобиля']);?>
<?= $form->field($model, 'answer')?>
<?= $form->field($model, 'check')->checkbox()?>
<?= Html::submitButton('Отправить', ['class' => 'btn btn-success']) ?>
<?php ActiveForm::end(); ?>
</div>