2016-09-04 3 views
0

У меня есть этот валидатор для ввода под названием «имя»:Laravel 5.3 - Пользовательские валидаторов

Regex:/^[A-Za-z0-9\\s\\-\\/,.]*$/|min:5|max:50 

Но, я хочу использовать этот валидатор в нескольких формах в моем веб-сайте. Как я могу это сделать без копирования этого валидатора во всех формах проверки?

В моей базе данных содержится таблица под названием «настройки», каждая строка представляет настройки веб-сайта. Каждый параметр содержит код Json, который сохраняет данные настройки. Я хочу создать собственный валидатор, который проверяет, соответствует ли входное значение одному из значений кода Json в моей базе данных. У меня есть JSon такой код:

[{"US":"United States", "UK":"United Kingdom"}] 

И я хочу, чтобы проверить, если значение входного сигнала равно одному из значений в коде Json. Как я могу это сделать?

ответ

1

Я знаю, что вы сказали, через ваш сайт. Однако я бы подумал, что вы гарантируете, что использование форм с использованием одних и тех же валидаторов относительно в одном состоянии. Вот пример, который помог мне добраться до того места, где я должен был быть! Я надеюсь, что она служит достаточно хорошим ориентиром !:

MessageBag документация здесь: http://laravel.com/docs/5.0/validation#error-messages-and-views

общественная функция postLogin ($ запрос Request)

public function postLogin(Request $request) 
{ 

    $validator = Validator::make($request->all(), [ 
     'email' => 'required|email', 'password' => 'required', 
    ]); 

    if ($validator->fails()) 
    { 
     return redirect($this->loginPath())->withErrors($validator, 'loginErrors'); 
    } 

    $credentials = $this->getCredentials($request); 

    if (Auth::attempt($credentials, $request->has('remember'))) { 
     return redirect()->intended($this->redirectPath()); 
    } 

    return redirect($this->loginPath()) 
     ->withInput($request->only('email', 'remember')) 
     ->withErrors([ 
      'email' => $this->getFailedLoginMessage(), 
     ], 'loginErrors'); 
} 

Теперь вы можете искать ошибки в вашей вид:

@if (!$errors->loginErrors->isEmpty()) 
<div class="form_error_login"> 
    <strong>Whoops!</strong> There were some problems with your input.<br> <br> 
     <ul> 
      @foreach ($errors->loginErrors->all() as $error) 
       <li>{{ $error }}</li> 
      @endforeach 
     </ul> 
</div> 
@endif 

Для модальностей (если вы их используете):

<script> 
    $findError = $('div').find ('div'); 
    if ($findError.hasClass('form_error_login')){ 
     $('#modalLogin').foundation('reveal', 'open'); 
    } 
    if ($findError.hasClass('form_error_register')){ 
     $('#modalRegister').foundation('reveal', 'open'); 
    } 
</script> 

Ссылка:

https://laracasts.com/discuss/channels/laravel/authcontroller-loginregistration-on-same-page