Логин и регистрация во всплывающем окне. Ajax Error

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
grpetr189853
Сообщения: 11
Зарегистрирован: 2019.03.27, 13:27
Откуда: Украина, г.Полтава
Контактная информация:

Логин и регистрация во всплывающем окне. Ajax Error

Сообщение grpetr189853 »

Добрый день! Я начинающий разработчик Yii и у меня стоит задача сделать логин и регистрацию на сайте во всплывающем модальном окне. Делал по инструкции https://кодер.укр/%D0%B7%D0%B0%D0%BF%D0 ... 0%BD%D0%B5.
Мой frontend\widgets\LoginFormWidget.php

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

<?php

namespace frontend\widgets;

use Yii;
use yii\base\Widget;
use common\models\LoginForm;

class LoginFormWidget extends Widget {

    public function run() {
        if (Yii::$app->user->isGuest) {
            $model = new LoginForm();
            return $this->render('loginFormWidget', [
                        'model' => $model,
            ]);
        } else {
            return;
        }
    }

}
Мой View - frontend\widgets\view\loginFormWidget.php

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

<?php

use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\bootstrap\Modal;

Modal::begin([
    'header' => '<h4>Login</h4>',
    'id' => 'login-modal',
]);
?>

<p>Please fill out the following fields to login:</p>

<?php
$form = ActiveForm::begin([
            'id' => 'login-form',
            'enableAjaxValidation' => true,
            'action' => ['site/ajax-login'],
        ]);
echo $form->field($model, 'username')->textInput();
echo $form->field($model, 'password')->passwordInput();
echo $form->field($model, 'rememberMe')->checkbox();
?>

<div>
    If you forgot your password you can <?= Html::a('reset it', ['site/request-password-reset']) ?>.
</div>
<div class="form-group">
    <div class="text-right">

        <?php
        echo Html::button('Cancel', ['class' => 'btn btn-default', 'data-dismiss' => 'modal']);
        echo Html::submitButton('Login', ['class' => 'btn btn-primary', 'name' => 'login-button']);
        ?>

    </div>
</div>

<?php
ActiveForm::end();
Modal::end();
actionAjaxLogin в frontend/controllers/SiteController.php

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

    public function actionAjaxLogin() {
        if (Yii::$app->request->isAjax) {
            $model = new LoginForm();
            if ($model->load(Yii::$app->request->post())) {
                if ($model->login()) {
                    return $this->goBack();
                } else {
                    Yii::$app->response->format = yii\web\Response::FORMAT_JSON;
                    return \yii\widgets\ActiveForm::validate($model);
                }
            }
        } else {
            throw new HttpException(404 ,'Page not found');
        }
    }
И ссылка на модальное окно в layouts\main.php

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

<a href="<?=Url::to(['/user/security/login'])  ?>" data-toggle="modal" data-target="#login-modal"><?=Yii::t('app', 'LOGIN')?></a> 
В результате модальное окно появляется - но при попытке залогиниться под пользователем который существует - получаю Ajax Error 404 - и в панели разработчика указано - Ajax Url - /user/site/ajax-login - хотя должен быть /site/ajax-login . Заранее спасибо за рекомендации!

someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Логин и регистрация во всплывающем окне. Ajax Error

Сообщение someweb »

'action' => ['site/ajax-login'], на 'action' => ['/site/ajax-login'],
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.

Ответить