#php #laravel #validation #twitter-bootstrap-3
#php #laravel #проверка #twitter-bootstrap-3
Вопрос:
Я использую Laravel 5.3 и https://github.com/1000hz/bootstrap-validator
Я проверяю электронную почту пользователей по своей базе данных в Laravel, чтобы проверить, используется ли электронная почта или нет.
В документах по валидатору начальной загрузки указано возвращать 200, если адрес электронной почты в порядке (т.Е. Не существует), и возвращать ошибку 4xx, если она существует.
В моей функции Laravel я делаю следующее :
public function check_email(Request $request)
{
// Email Address
$email = User::where('email', $request->input('email'))
->take(1)
->get();
$email = $email->toArray();
if(empty($email))
{
return response()->json(['Email Not Taken'], 200);
}
else
{
return response()->json(['Email In Use'], 400);
}
}
Теперь, когда я запускаю средство проверки, оно не отображает сообщение. Это потому, что Laravel строже относится к своим кодам ответов? Или я просто делаю что-то не так?
Мой HTML-код выглядит следующим образом :
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" placeholder="Email" data-remote="/validate-email" data-error="Please enter your Email Address" required="required">
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span><!-- /.help-block -->
@endif
<span class="glyphicon form-control-feedback" aria-hidden="true"></span>
<div class="help-block with-errors"></div>
</div><!-- /.form-group -->
Как мне настроить ответ 4xx с сообщением в Larvel 5.3?
Спасибо
Ответ №1:
Вы должны выполнить проверку либо в своем контроллере, либо создать класс запроса
public function check_email(Request $request)
{
//validate
$this->validate($request, [
'email' => 'required|unique:users',
]);
// Email Address
$email = User::where('email', $request->input('email'))
->take(1)
->get();
}
Ответ №2:
Во-первых, не проверяйте, существует ли пользователь с помощью запроса, используя класс validator Laravel https://laravel.com/docs/5.3/validation он уже выполнил эту работу за вас, см.: https://laravel.com/docs/5.3/validation#rule-unique
Во-вторых, ознакомьтесь с этой библиотекой, которая в значительной степени делает то, что вам уже нужно: https://github.com/proengsoft/laravel-jsvalidation