Laravel — валидация

Поділитись

Валидация является наиболее важным аспектом при разработке приложения. Он проверяет поступающие данные. По умолчанию базовый класс контроллера использует черту ValidatesRequests, которая предоставляет удобный метод для проверки входящих HTTP-запросов с помощью множества мощных правил проверки.

Доступные правила проверки в Laravel

Laravel всегда проверяет наличие ошибок в данных сеанса и автоматически связывает их с представлением, если они доступны. Таким образом, важно отметить, что переменная $ errors всегда будет доступна во всех ваших представлениях при каждом запросе, что позволяет вам удобно предполагать, что переменная $ errors всегда определена и может безопасно использоваться. В следующей таблице приведены все доступные правила проверки в Laravel.

Доступные правила проверки в Laravel
ПринятоАктивный URLПосле (Дата)
АльфаАльфа ДэшАльфа Числовой
массивДо (Дата)Между
логическийподтвердилДата
Формат датыРазныеDigits
Цифры междуЭл. почтаСуществует (база данных)
Файл изображения)Вцелое число
Айпи адресJSONМаксимум
MIME Типы (Файл)MinНе в
числовойРегулярное выражениенеобходимые
Требуется, еслиТребуется, если толькоТребуется с
Требуется со всемиТребуется безТребуется без всего
Так жеРазмерстрока
Часовой поясУникальный (База данных)URL

Переменная $ errors будет экземпляром Illuminate \ Support \ MessageBag . Сообщение об ошибке может быть отображено в файле представления, добавив код, как показано ниже.

@if (count($errors) > 0)
   <div class = "alert alert-danger">
      <ul>
         @foreach ($errors->all() as $error)
            <li>{{ $error }}</li>
         @endforeach
      </ul>
   </div>
@endif

пример

Шаг 1 — Создайте контроллер под названием ValidationController , выполнив следующую команду.

php artisan make:controller ValidationController --plain

Шаг 2 — После успешного выполнения вы получите следующий вывод —

ValidationController

Шаг 3 — Скопируйте следующий код в

Файл app / Http / Controllers / ValidationController.php .

приложение / Http / Контроллеры / ValidationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class ValidationController extends Controller {
   public function showform() {
      return view('login');
   }
   public function validateform(Request $request) {
      print_r($request->all());
      $this->validate($request,[
         'username'=>'required|max:8',
         'password'=>'required'
      ]);
   }
}

Шаг 4 — Создайте файл представления с именем resources / views / login.blade.php и скопируйте следующий код в этот файл.

ресурсы / виды / login.blade.php

<html>
   
   <head>
      <title>Login Form</title>
   </head>

   <body>
      
      @if (count($errors) > 0)
         <div class = "alert alert-danger">
            <ul>
               @foreach ($errors->all() as $error)
                  <li>{{ $error }}</li>
               @endforeach
            </ul>
         </div>
      @endif
      
      <?php
         echo Form::open(array('url'=>'/validation'));
      ?>
      
      <table border = '1'>
         <tr>
            <td align = 'center' colspan = '2'>Login</td>
         </tr>
         <tr>
            <td>Username</td>
            <td><?php echo Form::text('username'); ?></td>
         </tr>
         <tr>
            <td>Password</td>
            <td><?php echo Form::password('password'); ?></td>
         </tr>
         <tr>
            <td align = 'center' colspan = '2'
               ><?php echo Form::submit('Login'); ?  ></td>
         </tr>
      </table>
      
      <?php
         echo Form::close();
      ?>
   
   </body>
</html>

Шаг 5 — Добавьте следующие строки в app / Http / rout.php .

приложение / Http / routes.php

Route::get('/validation','ValidationController@showform');
Route::post('/validation','ValidationController@validateform');

Шаг 6 — Посетите следующий URL для проверки правильности.

http://localhost:8000/validation

Шаг 7 — Нажмите кнопку «Войти» , не вводя ничего в текстовое поле. Вывод будет таким, как показано на следующем рисунке.


Поділитись