@shevchenko__k
Помогаю новорожденным web программистам

Yii2 Как сделать регистрацию в модальном окне?

Здравствуйте. помогите мне пожалуйста с кодом. Мне нужно сделать модуль с регистрацией в модальном окне, но не получается загрузить автоматом данные. В чем проблема ? Пожалуйста поделитесь опытом.
Вот код.
Controller
<?php

namespace app\modules\auth\controllers;


use yii;
use yii\web\Controller;
use app\modules\auth\models\Login;

/**
 * Default controller for the `auth` module
 */
class DefaultController extends Controller
{
    /**
     * Renders the index view for the module
     * @return string
     */
    public function actionIndex()
    {
		$model = new \app\models\LoginForm();
        return $this->render('index',['model'=>$model]);
    }
	
	public function actionRegistration()
	{
		$model = new Login();
		//die(print_r($model->load(Yii::$app->request->post())));
		if($model->load(Yii::$app->request->post()) && $model->save()){
			return true;
			//$this->redirect('index');
		}
		
	}
}


Model
<?php

namespace app\modules\auth\models;

use yii\db\ActiveRecord;

class Login extends ActiveRecord
{


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

view
<?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\bootstrap\Modal;

$this->title = 'Личный кабинет';
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="row">
	<?php 
		Modal::begin([
			'header' => '<h2>Registration</h2>',
			'toggleButton' => ['label' => 'click me'],
			
		]);?>

		<?php $form = ActiveForm::begin([
        'id' => 'login-form',
        'layout' => 'horizontal',
        'fieldConfig' => [
            'template' => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>",
            'labelOptions' => ['class' => 'col-lg-1 control-label'],
        ],
    ]); ?>

        <?= $form->field($model, 'login_user')->textInput(['autofocus' => false])->label('Логин') ?>

        <?= $form->field($model, 'password_user')->passwordInput()->label('Пароль') ?>
        <div class="form-group">
            <div class="col-lg-offset-1 col-lg-11">
                <?= Html::Button('Save', ['class' => 'btn btn-primary', 'name' => 'save','id'=>'user_reg']) ?>
            </div>
        </div>

    <?php ActiveForm::end(); ?>

		<?php Modal::end();?>
</div>
<div class="site-login">
    <h1><?= Html::encode($this->title) ?></h1>

    <p>Пожалуйста, заполните поля:</p>

    <?php $form = ActiveForm::begin([
        'id' => 'login-form',
        'layout' => 'horizontal',
        'fieldConfig' => [
            'template' => "{label}\n<div class=\"col-lg-3\">{input}</div>\n<div class=\"col-lg-8\">{error}</div>",
            'labelOptions' => ['class' => 'col-lg-1 control-label'],
        ],
    ]); ?>

        <?= $form->field($model, 'username')->textInput(['autofocus' => false])->label('Логин') ?>

        <?= $form->field($model, 'password')->passwordInput()->label('Пароль') ?>

        <?= $form->field($model, 'rememberMe')->checkbox([
            'template' => "<div class=\"col-lg-offset-1 col-lg-3\">{input} {label}</div>\n<div class=\"col-lg-8\">{error}</div>",
        ])->label('Запомнить') ?>

        <div class="form-group">
            <div class="col-lg-offset-1 col-lg-11">
                <?= Html::submitButton('Войти', ['class' => 'btn btn-primary', 'name' => 'login-button']) ?>
            </div>
        </div>

    <?php ActiveForm::end(); ?>
</div>

js
$(function(){
	$("#user_reg").click(function(e){
		 $.ajax({
			 url:"/auth/default/registration",
			 type:"POST",
			 data:"login_user="+$("#loginform-login_user").val()+"&password_user="+$("#loginform-password_user").val(),
			 success:function(answer){
				 alert(answer);
			 }
		 });
	});
});
  • Вопрос задан
  • 736 просмотров
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
загрузить автоматом данные

Термин надо расписать. Миллион вариантов, что под ним скрывается.

Далее:
class Login не имеет ни валидации ни чего. Как же Вы из него activeForm строите потом?

$model->load(Yii::$app->request->post()) сработает если в POST будет массив вида [название класса модели][атрибут] например ['Login']['userName']

Я бы не делал это велосипед. Взял бы стандартный для yii метод авторизации и просто засунул с модальное окно.
Форму слать не ajax а обычным post иначе смысл? Пользователь авторизуется на сервере, а клиент об этом еще знать не будет. Так что можно по клику на некую кнопку, открывать модалку, делать get ajax получать в ответ код формы, вставлять в модалку эту форму, а далее просто submit, а на сервере получение, логин и редирект на предыдущую страницу
Ответ написан
Ваш ответ на вопрос

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

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