Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.11.2017 15:29:58

Авторизация + Ajax

Laravel Framework v5.4.33
PHP Version 7.1.6
Операционная система и её версия: linux centos

Добрый день.
Установил стандартную авторизацию из коробки. Всё работает хорошо, но возникла потребность выводить ошибки валидации без перезагрузки страницы. Понимаю, что необходимо использовать Ajax. C Ajax немного знаком, также имеется опыт работы с ним в Laravel, но как его использовать в авторизации и регистрации, пока не знаю. Помогите, пож-та, в решении данного вопроса. Буду рад любой помощи.
Заранее спасибо.

Не в сети

#2 10.11.2017 16:01:27

Re: Авторизация + Ajax

Способов много, можешь посмотреть на пример, чтобы понять как это работает.

Не в сети

#3 10.11.2017 17:10:30

Re: Авторизация + Ajax

Спасибо за оперативный ответ.
Данную статью уже читал. Там рассказывается, если создавать свою форму, это я уже умею))).
У меня немного другая проблема, как сделать тоже самое только с системой авторизации/регистрации, которая поставляется в Laravel с коробки.   
Исходя из примера, не понятно где сформировать данный json
95594d38c9.jpg
и в каком виде вывести его сюда
82c07eea0e.jpg

Не в сети

#4 10.11.2017 17:15:15

Re: Авторизация + Ajax

В стандартной аутентификации Laravel такая же простая форма, как и в примере, поэтому можешь смело следовать туториалу.

Не в сети

#5 10.11.2017 18:53:11

Re: Авторизация + Ajax

Дак вот же
https://yadi.sk/i/uxps8Dwq3PayKd
не? разве в 5.4 этого нет??

там вродеб как должно быть:
метод регистрации

    public function register(Request $request)
    {
        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

        return $this->registered($request, $user)
                        ?: redirect($this->redirectPath());
    }

если посмотреть в  $this->validator, то:

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
 // даже по указанной таблице проверяет уникальность почты и гоняет по маскам email
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
        ]);
    }

сама вьюха. скопировал саму суть

            <div class="panel panel-default">
                <div class="panel-heading">Register</div>

                <div class="panel-body">
                    <form class="form-horizontal" method="POST" action="{{ route('register') }}">
                        {{ csrf_field() }}

                        <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
                            <label for="name" class="col-md-4 control-label">Name</label>

                            <div class="col-md-6">
                                <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}" required autofocus>

                                @if ($errors->has('name'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('name') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('login') ? ' has-error' : '' }}">
                            <label for="login" class="col-md-4 control-label">Login</label>

                            <div class="col-md-6">
                                <input id="login" type="text" class="form-control" name="login" value="{{ old('login') }}" required autofocus>
                                @if ($errors->has('login'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('login') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                            <label for="email" class="col-md-4 control-label">E-Mail Address</label>

                            <div class="col-md-6">
                                <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required>

                                @if ($errors->has('email'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('email') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
                            <label for="password" class="col-md-4 control-label">Password</label>

                            <div class="col-md-6">
                                <input id="password" type="password" class="form-control" name="password" required>

                                @if ($errors->has('password'))
                                    <span class="help-block">
                                        <strong>{{ $errors->first('password') }}</strong>
                                    </span>
                                @endif
                            </div>
                        </div>

                        <div class="form-group">
                            <label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>

                            <div class="col-md-6">
                                <input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
                            </div>
                        </div>

                        <div class="form-group">
                            <div class="col-md-6 col-md-offset-4">
                                <button type="submit" class="btn btn-primary">
                                    Register
                                </button>
                            </div>
                        </div>
                    </form>
                </div>
            </div>

Изменено sam (10.11.2017 18:54:23)

Не в сети

#6 10.11.2017 19:04:24

Re: Авторизация + Ajax

Лично я раньше делал чтото типа таво )))) (код по идее рабочий, мой, в своих черновиках нашел, но не проверял)

{{ Form::submit('Отправить', ['class' => 'btn btn-primary', 'onclick'=>'AjaxCreateValid()']) }}


        function AjaxCreateValid()
        {
            var name = $("#name").val();
            var family = $("#family").val();
            var phone = $("#phone").val();
            var email = $("#email").val();
            var reason = $("#reason").val();
            if (name && family && phone && email && reason && test_email == true) {
                $('#succs_valid_created_email').show().delay(5000).fadeOut();   //  Сообщение что запись создана, но сабмит перебивает.
            } else {
                if (!name) {
                    $('#error_valid_created_name').show().delay(5000).fadeOut();
                    return null;
                }
                if (!family) {
                    $('#error_valid_created_family').show().delay(5000).fadeOut();
                    return null;
                }
                if (!phone) {
                    $('#error_valid_created_phone').show().delay(5000).fadeOut();
                    return null;
                }
                if (!email) {
                    $('#error_valid_created_email_empty').show().delay(5000).fadeOut();
                    return null;
                }else {
                    // если поле почты заполнено, проверяем ее валидность
                    var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
                    var test_email = regex.test(email);
                    if (test_email == false){
                        $('#error_valid_created_email').show().delay(5000).fadeOut();
                        return null;
                    }
                }
                if (!reason) {
                    $('#error_valid_created_reason').show().delay(5000).fadeOut();
                    return null;
                }

                return false;
            }

            return true;
        }



        <div id="succs_valid_created_email" class="alert alert-success" hidden="true" align="center">
            Запись добавлена
        </div>
        <div id="error_valid_created_name" class="alert alert-danger" hidden="true" align="center">
            Укажите своё Имя
        </div>
        <div id="error_valid_created_family" class="alert alert-danger" hidden="true" align="center">
            Укажите свою Фамилию
        </div>
        <div id="error_valid_created_phone" class="alert alert-danger" hidden="true" align="center">
            Укажите свой телефон
        </div>
        <div id="error_valid_created_email_empty" class="alert alert-danger" hidden="true" align="center">
            Укажите свой электронный почтовый адрес
        </div>
        <div id="error_valid_created_email" class="alert alert-danger" hidden="true" align="center">
            Формат почты указан не верно
        </div>
        <div id="error_valid_created_reason" class="alert alert-danger" hidden="true" align="center">
            Укажите причину обращения
        </div>

Не в сети

#7 13.11.2017 11:05:08

Re: Авторизация + Ajax

Спасибо.
Обязательно попробую и отпишусь.

Не в сети

Подвал раздела