зарегистрируйте div, перенаправляющий на страницу входа в систему при возникновении ошибок аутентификации - PullRequest
0 голосов
/ 30 октября 2019

У меня есть индексная страница, на которой есть логин и регистрация на разных div-элементах, управляемых jQuery.

при наличии ошибок на странице регистрации, ошибки страницы возвращаются на страницу входа и страницу входа такжепоказывает, что есть ошибки, которых не должно быть

<div class="main">
    <div class="auth-buttons">
        <a class="btn" id="btn-login">Login</a>
        <a class="btn" id="btn-register">Register</a>
    </div>
    <div id="lgn" class="btns">
        <form method="POST" action="{{ route('login')}}" autocomplete="off">
            @csrf
            @if($errors->any())
            <div class="auth-error">
                <i class="icon-warning-sign"></i>Error:Incorrect password/email.Please try again
            </div>
            @endif
        </form>
    </div>
    <div id="reg" class="btns">
        <form method="POST" action="{{ route('register')}}" autocomplete="off">
            @if (count($errors) > 0)
            @foreach ($errors->all() as $error)
            <p>{{ $error }}
                </button>
            </p>
            @endforeach
            @endif
        </form>
    </div>
</div>

jQuery

$('#reg').hide();
$('#btn-login').click(function () {
    $('#reg').hide();
    $('#lgn').show();
});
$('#btn-register').click(function () {
    $('#lgn').hide();
    $('#reg').show();
});

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Вам необходимо различать ваш логин и ошибки регистрации. Вы можете сделать это с помощью пакетов ошибок!

https://laravel.com/docs/5.7/validation#named-error-bags

Документ немного расплывчат, но должен дать вам хорошее начало.

0 голосов
/ 30 октября 2019

Я приведу полный пример, показывающий ошибки для каждого поля: - Существует много способов проверки вашей формы в laravel 1) Метод запроса

public function form(Request $request)
{
  $request->validate([
    'field1' => 'require|min|max',
    'fields2' =>'require|min|max' 
  ],
  [
    'field1.require' => 'your msg',
    'field1.max' => 'your msg',
    'field1.min' => 'your msg',,
    'field2.require' => 'your msg',
  ]
  );
}

2) Создав отдельный файл с помощью php artisan make: request filename.this файл будет создан в папке app \ html \ request с правами доступа, методами правил, вы определите еще несколькометод как сообщение для пользовательского сообщения и метод атрибута, чтобы дать другое имя поля. пример:

public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'email' => 'required',
            'pass' => 'required|min:6|max:15'
        ];
    }

    public function messages()
    {
        return [
            'email.required' => 'Email is required',
            'pass.required' => 'Password is required',
            'pass.min' => 'Password must be atleast 6 digit long',
            'pass.max' => 'Password must not be greater than 15 digits'
        ];
    }

    public function attributes()
    {
        return [
            'pass' => 'user password',
            'email' => 'email address',
        ];
    }

3) с помощью метода валидатора, чтобы использовать валидатор, необходимо определить фасад, используя Illuminate \ Support \ Facades \ validator;пример: -

$validator = Validator::make($request->all(),[
    			'email' => 'required',
    			'pass' => 'required|min:6|max:15'
    		], 
    		[
    			'email.required' => ':attribute is required',
    			'pass.required' => 'password is required',
    			'pass.min' => 'Password must be atleast 6 digits',
    			'pass.max' => 'Password must not be greater than 15 digits'
    		]
    	)->validate();

позволяет отображать сообщение об ошибке в блейде 1) в форме создания блейда и отображать сообщение об ошибке при сбое проверки, например

<form action="{{route('validation')}}" method="post">
		@csrf
	<div class="form-group">	
		<label>Email</label>
		@error('email')
		<p style="color:red">{{$message}}</p>
		@enderror
	 	<input type="email" name="email" value="{{old('email')}}" class="form-control">	
	</div>
	<div class="form-group">
		<label>password</label>
		@error('pass')
			<p style="color:red">{{$message}}</p>
		@enderror
		<input type="password" name="pass" value="{{old('pass')}}" class="form-control">
	</div>

	<div class="form-group">
		<input type="file" class="form-control" name="files">
	</div>	

	
	<input type="submit" name="submit" value="submit" class="btn btn-primary">
	</form>

2) в контроллере

$validator = Validator::make($request->all(),[
    			'email' => 'required',
    			'pass' => 'required|min:6|max:15'
    		], 
    		[
    			'email.required' => ':attribute is required',
    			'pass.required' => 'password is required',
    			'pass.min' => 'Password must be atleast 6 digits',
    			'pass.max' => 'Password must not be greater than 15 digits'
    		]
    	)->validate();

Если проверка не удалась, она автоматически перенаправляется на блейд с ошибкой msg и печатает их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...