Безопасность (Laravel 4.2) — Laravel Framework Russian Community

Accepted

Поле должно быть в значении yes, on, 1 или true. Это полезно для проверки принятия правил и лицензий.

After:date

Поле должно быть датой, более поздней, чем date. Строки приводятся к датам функцией strtotime:

Вместо того, чтобы передавать строку-дату в strtotime, вы можете указать другое поле для сравнения с датой:

Alpha


Поле должно содержать только латинские символы.

Alpha_dash

Поле должно содержать только латинские символы, цифры, знаки подчёркивания (_) и дефисы (-).

Alpha_num

Поле должно содержать только латинские символы и цифры.

Array

Поле должно быть PHP-массивом (тип array).

Before:date


Поле должно быть датой, более ранней, чем date. Строки приводятся к датам функцией strtotime.

Between:min,max

Поле должно быть числом в диапазоне от min до max. Строки, числа и файлы трактуются аналогично правилу PHPsize.

Boolean

Поле должно соответствовать логическому типу. Доступные значения: true, false, 1, 0, “1” и “0”.

Confirmed

Значение поля должно соответствовать значению поля с этим именем, плюс _confirmation. Например, если проверяется поле password, то на вход должно быть передано совпадающее по значению поле password_confirmation.

Date_format:format


Поле должно подходить под заданный формат. При проверке поля вы должны использовать либоdate, либоdate_format, но не оба сразу.

Different:field

Значение проверяемого поля должно отличаться от значения поля field.

Digits:value

Поле должно быть числовым и иметь длину, равную value.

Digits_between:min,max

Поле должно иметь длину в диапазоне между min и max.

5.3 5.2

добавлено в


5.3

(28.01.2022)


5.2

(08.12.2022)

Dimensions

Файл должен быть изображением с подходящими под ограничения размерами, которые указаны в параметрах правила:

Доступные ограничения: min_width, max_width, min_height, max_height, width, height, ratio.

Ограничение ratio должно быть задано в виде ширины, поделённой на высоту. Это можно указать выражением вида PHP3/2 или в виде нецелого числа PHP1.5:

Distinct

При работе с массивами поле не должно содержать дублирующих значений.

Dimensions


Файл должен быть изображением с подходящими под ограничения размерами, которые указаны в параметрах правила:

Доступные ограничения: min_width, max_width, min_height, max_height, width, height, ratio.

Ограничение ratio должно быть задано в виде ширины, поделённой на высоту. Это можно указать выражением вида PHP3/2 или в виде нецелого числа PHP1.5:

Distinct


При работе с массивами поле не должно содержать дублирующих значений.

Email

Поле должно быть корректным адресом e-mail.

Exists:table,column

Поле должно существовать в заданной таблице базы данных.

Простое использование

Указание имени поля в таблице

5.2

добавлено в


5.2

(08.12.2022)

Вы также можете указать больше условий, которые будут добавлены к запросу WHERE:

Это условие можно обратить с помощью знака ! :

Если передать значение NULL/NOT_NULL в запрос WHERE, то это добавит проверку значения БД на совпадение с NULL/NOT_NULL:

5.3

добавлено в


5.3

(28.01.2022)

Если вы хотите изменить запрос, выполняемый правилом проверки, то можете использовать класс Rule, чтобы задать правило гибко. В этом примере мы также укажем правила проверки в виде массива, вместо использования символа PHP| для разделения правил:

Filled

Поле не должно быть пустым, если оно есть.

Image

Загруженный файл должен быть изображением в формате JPEG, PNG, BMP, GIF или SVG.

In:foo,bar,…


Значение поля должно быть одним из перечисленных (foo, bar и т.д.).

Integer

Поле должно иметь корректное целочисленное значение.

Max:value

Значение поля должно быть меньше или равно value. Строки, числа и файлы трактуются аналогично правилу PHPsize.

Mimes:foo,bar,…

MIME-тип загруженного файла должен быть одним из перечисленных.

Простое использование

Несмотря на то, что вы просто указываете расширение файла, это правило проверяет MIME-тип файла, обращаясь к его содержимому и распознавая его MIME-тип.

Min:value


Значение поля должно быть более или равно value. Строки, числа и файлы трактуются аналогично правилу PHPsize.

Not_in:foo,bar,…

Значение поля не должно быть одним из перечисленных (foo, bar и т.д.).

Numeric

Поле должно иметь корректное числовое или дробное значение.

Regex:pattern

Поле должно соответствовать заданному регулярному выражению.

При использовании этого правила может быть необходимо указать другие правила в виде элементов массива, вместо разделения их с помощью символа вертикальной черты, особенно если выражение содержит этот символ вертикальной черты (|).

Required

Проверяемое поле должно иметь непустое значение. Поле считается «пустым», при выполнении одного из следующих условий:

Required_if:anotherfield,value,…

Проверяемое поле должно иметь непустое значение, если другое поле anotherfield имеет любое значение value.

Required_unless:anotherfield,value,…

Проверяемое поле должно иметь непустое значение, если другое поле anotherfield не имеет значение value.

Required_with:foo,bar,…


Проверяемое поле должно иметь непустое значение, но только если присутствует любое из перечисленных полей (foo, bar и т.д.).

Required_with_all:foo,bar,…

Проверяемое поле должно иметь непустое значение, но только если присутствуют все перечисленные поля (foo, bar и т.д.).

Required_without:foo,bar,…

Проверяемое поле должно иметь непустое значение, но только еслине присутствует любое из перечисленных полей (foo, bar и т.д.).

Required_without_all:foo,bar,…

Проверяемое поле должно иметь непустое значение, но только еслине присутствуют все перечисленные поля (foo, bar и т.д.).

Same:field


Поле должно иметь то же значение, что и поле field.

Size:value

Поле должно иметь совпадающий с value размер. Для строк это обозначает длину, для чисел — число, для массивов — число элементов массива, для файлов — размер в килобайтах.

String

Поле должно быть строкового типа. Если вы хотите разрешить для поля значение PHPnull, назначьте на поле правило PHPnullable.

Timezone


Поле должно содержать корректный идентификатор временной зоны в соответствии с PHP-функцией PHPtimezone_identifiers_list.

Unique:table,column,except,idcolumn

Значение поля должно быть уникальным в заданной таблице базы данных. Если column не указано, то будет использовано имя поля.

Указание имени столбца в таблице

Указание соединения с БД

Авторизация пользователя с использованием условий

Вы также можете передать дополнительные условия для запроса к таблице:

if (Auth::attempt(array('email' => $email, 'password' => $password, 'active' => 1)))
{
    
}

Примечание Для повышения безопасности после аутентификации фреймворк регенерирует ID сессии пользователя.

Похожее:  ОЛХ - вход в личный кабинет

Вебхук после проверки

Валидатор также позволяет прикрепить обратные вызовы, которые будут запущены после завершения проверки. Это позволяет легко выполнять последующие проверки, а также добавлять сообщения об ошибках в коллекцию сообщений. Для начала используйте метод PHPafter() на экземпляре класса PHPValidator:

Завершение сессии

Для завершения сессии пользователя можно использовать метод logout фасада Auth. Он очистит информацию об аутентификации в сессии пользователя:

Auth::logout();

Защита маршрутов

Вы можете использовать Фильтрымаршрутов, чтобы позволить только авторизованным пользователям обращаться к данному маршруту. Изначально Laravel содержит фильтр auth, который содержится в файле app/filters.php.

Защита маршрута

Защита от подделки запросов (csrf)

Laravel предоставляет простой способ защиты вашего приложения от подделки межсайтовых запросов (CSRF).

Вставка CSRF-ключа в форму

Защита роута аутентификацией

Route::get('profile', array('before' => 'auth', function(){
	
}));

Изменение пути

Когда пользователь успешно аутентифицируется, он будет перенаправлен на URI /home. Вы можете изменить место для перенаправления после входа, задав свойство redirectTo контроллеров LoginController, RegisterController и ResetPasswordController:

protected $redirectTo = '/';

Если для пути перенаправления требуется собственная логика генерации, можно задать метод redirectTo вместо свойства redirectTo:

protectedfunctionredirectTo(){
    return'/path';
}

Метод redirectTo имеет приоритет над атрибутом redirectTo.

Изменение режима и алгоритма шифрования

Вы также можете установить свой алгоритм и режим шифрования:

Crypt::setMode('ctr');

Crypt::setCipher($cipher);

Изменение сообщений об ошибках

При необходимости вы можете задать свои сообщения об ошибках проверки ввода вместо изначальных. Для этого есть несколько способов. Во-первых, вы можете передать свои сообщения третьим аргументом метода PHPValidator::make():

В этом примере обозначение :attribute будет заменено именем проверяемого поля. Вы можете использовать и другие обозначения. Например:

Указание своего сообщения для конкретного атрибута

Иногда вам может понадобиться указать своё сообщения только для конкретного поля. Вы можете сделать это с помощью «точечной» записи. Сначала укажите имя атрибута, а затем правило:

Указание своих сообщений в языковых файлах

В большинстве случаев вы будете указывать свои сообщения в языковом файле, а не передавать их напрямую в Validator. Для этого добавьте свои сообщения в массив custom в языковом файле resources/lang/xx/validation.php:

Имеет ли пользователь токен “запомнить меня”

Метод viaRemember позволяет узнать, вошел ли пользователь при помощи фичи “запомнить меня”.

if (Auth::viaRemember())
{
	
}

Именованные наборы ошибок

Если у вас несколько форм на одной странице, вы можете дать имена наборам ошибок MessageBag, и получать сообщения об ошибках для конкретной формы. Просто передайте имя вторым аргументом метода PHPwithErrors():

Теперь вы можете обращаться к экземпляру MessageBag из переменной PHP$errors:

Контроллер сброса паролей

Теперь мы готовы к созданию контроллера сброса паролей. Чтобы автоматически создать контроллер, вы можете использовать Artisan-команду shauth:reminders-controller, которая создаст файл RemindersController.php в вашем каталоге app/controllers.

shphp artisan auth:reminders-controller

В созданном контроллере уже будет метод PHPgetRemind(), который обрабатывает отображение вашей формы сброса пароля. Вам надо только создать шаблонpassword.remind.

Простая форма в шаблоне password.remind может выглядеть так:

В дополнение к PHPgetRemind() в созданном контроллере будет метод PHPpostRemind(), который обрабатывает отправку оповещений о сбросе пароля вашим пользователям по электронной почте.

Этот метод предполагает наличие поля email в переменных POST. Если оповещение будет успешно отправлено пользователю по электронной почте, то в сессию будет передано сообщение status. Если оповещение не пройдёт, в сессию будет передано сообщение error.

В методе контроллера PHPpostRemind() вы можете изменить экземпляр сообщения перед его отправкой пользователю:

Ваш пользователь получит по электронной почте ссылку, которая указывает на метод контроллера PHPgetReset(). Ключ сброса пароля, который используется для идентификации данной попытки сброса пароля, также будет передан методу контроллера.

Действие уже настроено, чтобы вернуть шаблон password.reset, который вы должны создать. Ключ token будет передан в шаблон, и вы должны поместить этот ключ в скрытое поле формы token. Кроме поля token форма сброса пароля должна содержать поля email, password и password_confirmation.


Простая форма в шаблоне password.reset может выглядеть так:

Краткое руководство по проверке ввода

Для изучения мощных возможностей проверки ввода в Laravel, давайте рассмотрим полный пример проверки ввода через форму и вывода сообщений об ошибках.

Назначение гарда

Когда вы назначаете middleware auth для защиты роута, вы можете явно указать, какой guard из тех, что определены у вас в config/auth.php вы хотите использовать в данном случае:

Route::get('profile', [
    'middleware' => 'auth:api',
    'uses' => 'ProfileController@show'
]);

Настройка

Laravel стремится сделать реализацию авторизации максимально простой. Фактически, почти всё уже настроено после установки. Настройки хранятся в файле app/config/auth.php, который содержит несколько хорошо документированных параметров для настройки поведения методов авторизации.

Настройка валидации и сохранения пользователей

Для изменения полей формы, обязательных к заполнению при регистрации пользователей, или для изменения способа создания пользователей в базе данных вы можете править класс AuthController. Этот класс отвечает за валидацию и создание новых пользователей вашего приложения.

Метод validator класса AuthController содержит в себе правила валидации формы регистрации новых пользователей. Вы можете изменять его, как пожелаете.

Настройка гардов

В config/auth.php вы можете определить несколько гардов. Чтобы использовать выбранный гард для процедуры восстановления пароля, добавьте свойство в класс PasswordController:

Настройка гардов (guards)

Вы также можете назначить специфичный гард для обработки процесса аутентификации. Для этого создайте свойство guard в вашем классе AuthController. Значением этого свойства должно быть название одного из гардов, определённых вами в файле config/auth.php.

Настройка гварда

Вы также можете изменить “гварда”, который используется для аутентификации и регистрации пользователей. Для начала задайте метод guard в LoginController, RegisterController и ResetPasswordController. Метод должен возвращать экземпляр гварда:

useIlluminateSupportFacadesAuth;

protectedfunctionguard(){
    return Auth::guard('guard-name');
}

Определение маршрутов

Сначала давайте предположим, что у нас есть следующие маршруты, определённые в файле routes/web.php:


Очевидно, маршрут GET выведет пользователю форму для написания новой статьи, а маршрут POST сохранит её в БД.

Похожее:  Сети для гостиниц | TP-Link Россия

Определение, аутентифицирован ли пользователь

Чтобы определить, что пользователь уже вошёл в ваше приложение, вы можете использовать метод check фасада Auth, который вернёт true, если пользователь аутентифицирован:

useIlluminateSupportFacadesAuth;

if (Auth::check()) {
    
}

Хотя и возможно определить аутентифицирован ли пользователь, используя метод check, обычно вы будете использовать посредников для проверки был ли пользователь аутентифицирован ранее, позволяя этому пользователю получать доступ к определенным роутам / контроллерам. Для получения дополнительной информации смотрите документацию о защите роутов.

Проверка ввода массивов

Проверка ввода массива из полей ввода не должна быть сложной. Например, чтобы проверить, что каждый e-mail в данном поле ввода массива уникален, можно сделать так:


Также вы можете использовать символ * при задании сообщений об ошибках ввода в языковых файлах, что позволяет легко использовать одно сообщение для полей на основе массивов:

Проверка данных для входа без авторизации

Метод validate позволяет вам проверить данные для входа без осуществления самого входа.

if (Auth::validate($credentials))
{
	
}

Проверка пароля

По умолчанию метод PHPPassword::reset() будет проверять, что пароли совпадают и содержат не менее шести символов.

Вы можете настроить эти правила, используя метод PHPPassword::validator(), который принимает замыкание. В этом замыкании, вы можете делать любые проверки пароля. Обратите внимание, что вам не надо проверять совпадение паролей, фреймворк сделает это автоматически.


По умолчанию ключи сброса пароля истекают через один час. Вы можете изменить это с помощью параметра reminder.expire в вашем файле app/config/auth.php.

Проверка пароля по хэшу:

if (Hash::check('secret', $hashedPassword))
{
	
}

Проверка переданного csrf-ключа

Route::post('register', array('before' => 'csrf', function(){
    return'Вы передали верный ключ!';
}));

Работа с сообщениями об ошибках

После вызова метода PHPerrors() (для Laravel 5.0 PHPmessages()) на экземпляре Validator вы получите объект PHPIlluminateSupportMessageBag, который имеет набор полезных методов для работы с сообщениями об ошибках.

Переменная PHP$errors, которая автоматически становится доступной всем представлениям, также является экземпляром класса MessageBag.

Получение первого сообщения для поля


Для получения первого сообщения об ошибке для данного поля используйте метод PHPfirst():

Получение всех сообщений для одного поля

Для получения массива всех сообщений для данного поля используйте метод PHPget():

Получение всех сообщений для всех полей

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

Проверка наличия сообщения для поля

Для определения наличия сообщений об ошибках для определённого поля служит метод PHPhas():

Расшифровка строки

$decrypted = Crypt::decrypt($encryptedValue);

Ручная авторизация

Если вам нужно авторизовать существующего пользователя просто передайте его модель в метод PHPAuth::login():

Это эквивалентно авторизации пользователя через его данные методом PHPAuth::attempt().

Сброс пароля (4.0)

Как только пользователь перешёл по ссылке в письме, он будет перенаправлен на форму со скрытым ключом token, а также полями password и password_confirmation. Ниже — пример маршрута для формы сброса:


А сама форма может выглядеть так:

Обратите внимание, что мы снова используем сессии для отображения ошибки, которая могла произойти при сбросе пароля. Дальше мы определяем POST-маршрут, который и произведёт сброс:

Собственные правила проверки

Laravel содержит множество полезных правил, однако вам может понадобиться создать собственные. Один из способов зарегистрировать произвольное правило — через метод PHPValidator::extend(). Давайте используем этот метод в сервис-провайдере для регистрации своего правила:

Переданная функция-замыкание получает четыре аргумента: имя проверяемого поля PHP$attribute, значение поля PHP$value, массив параметров PHP$parameters, переданных правилу, и объект Validator.


Вместо замыкания в метод PHPextend() также можно передать метод класса:

Определение сообщения об ошибке

Вам также понадобится определить сообщение об ошибке для нового правила. Вы можете сделать это либо передавая его в виде массива строк в PHPValidator, либо вписав в языковой файл.

5.0

добавлено в


5.0

(08.02.2022)

Расширение класса PHPValidator

Вместо использования функций-замыканий для расширения набора доступных правил вы можете расширить сам класс PHPValidator. Для этого создайте класс, который наследует IlluminateValidationValidator. Вы можете добавить новые методы проверок, начав их имя с validate:

Регистрация нового класса PHPValidator

Затем вам нужно зарегистрировать собственное расширение:

Иногда при создании своего правила вам может понадобиться определить собственные строки-переменные для замены в сообщениях об ошибках. Это делается путём создания класса, как было описано выше, и вызовом метода PHPValidator::replacer().

Неявное наследование

По умолчанию, если проверяемое поле отсутствует или имеет пустое значение по правилу required, обычные правила не запускаются, в том числе собственные правила. Например, правило unique не будет запущено для значения null:

Чтобы применять правило даже для пустых полей, правило должно считать, что поле обязательное. Для создания такого «неявного» наследования используйте метод PHPValidator::extendImplicit():

«Неявное» наследование только указывает на обязательность поля. А будет ли правило пропускать пустое или отсутствующее поле или нет, зависит от вас.

Создание валидаторов вручную

Если вы не хотите использовать метод PHPvalidate() типажа ValidatesRequests, вы можете создать экземпляр валидатора вручную с помощью фасадаValidator.

Первый аргумент метода PHPmake() — данные для проверки. Второй — правила, которые должны быть применены к этим данным.

Если запрос не пройдёт проверку, вы можете использовать метод PHPwithErrors(), чтобы передать сообщения об ошибках в сессию. При использовании этого метода переменная PHP$errors автоматически станет общей для ваших представлений после переадресации, позволяя вам легко выводить их пользователю.

5.0

добавлено в


5.0

(08.02.2022)

Использование массивов для указания правил

Несколько правил могут быть разделены либо прямой чертой (|), либо быть отдельными элементами массива.

Проверка нескольких полей

Когда создан экземпляр PHPValidator, метод PHPfails() (или PHPpasses()) может быть использован для проведения проверки.

Если валидатор нашёл ошибки, вы можете получить его сообщения таким образом:

Вы также можете получить массив правил, по которым данные не прошли проверку, без самих сообщений — с помощью метода PHPfailed():

Создание запроса формы

Для более сложных сценариев проверки вам может понадобиться «запрос формы». Запросы формы — изменённые классы запросов, содержащие логику проверки. Для создания класса запроса формы используйте Artisan-команду shmake:request:

shphp artisan make:request StoreBlogPost

Создание контроллера


Теперь давайте посмотрим на простой контроллер, который обрабатывает эти маршруты. Метод PHPstore() мы пока оставим пустым:

Похожее:  Личный кабинет юридического лица ИФНС

Создание приложений, включая аутентификацию

Если вы запускаете совершенно новое приложение и хотите включить каркас аутентификации, вы можете использовать директиву –auth при создании приложения. Эта команда создаст новое приложение со всеми скомпилированными и установленными каркасами аутентификации:

laravel new blog --auth

Как упоминалось в предыдущем разделе, команда php artisan ui vue –auth пакета laravel/ui создаст все представления, необходимые для аутентификации, и поместит их в каталог resources/views/auth.

Команда ui также создаст каталог resources/views/layouts, содержащий базовый макет для вашего приложения. Все эти представления используют CSS-фреймворк Bootstrap, но вы можете настраивать их, как хотите.

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

Создание таблицы токенов сброса пароля

Далее, должна быть создана таблица для хранения токенов запросов сброса пароля. Для создания такой таблицы существует artisan-команда auth:reminders-table.

php artisan auth:reminders-table

php artisan migrate

Указание охранника

При подключении промежуточного программного обеспечения auth к маршруту вы также можете указать, какое средство защиты должно использоваться для аутентификации пользователя. Указанный охранник должен соответствовать одному из ключей в массиве guards вашего файла конфигурации auth.php:

public function __construct()
{
    $this->middleware('auth:api');
}

Иногда вы можете потребовать от пользователя подтвердить свой пароль перед доступом к определенной области вашего приложения. Например, это может потребоваться до того, как пользователь изменит какие-либо параметры выставления счетов в приложении.

Для этого Laravel предоставляет промежуточное ПО password.confirm. Присоединение промежуточного программного обеспечения password.confirm к маршруту перенаправит пользователей на экран, где им необходимо подтвердить свой пароль, прежде чем они смогут продолжить:

Условные правила

Проверять при наличии


В некоторых случаях вам нужно запускать проверки поля, только если оно есть во входном массиве. Чтобы быстро это сделать, добавьте правило sometimes в ваш список правил:

В этом примере поле email будет проверено, только если оно есть в массиве $data.

Сложные условные проверки

Иногда вам может быть нужно, чтобы поле имело какое-либо значение, только если другое поле имеет значение, скажем, больше 100. Или вы можете требовать наличия двух полей, только когда также указано третье. Это легко достигается условными правилами. Сперва создайте объект PHPValidator с набором статичных правил, которые никогда не изменяются:

Теперь предположим, что ваше приложения написано для коллекционеров игр. Если регистрируется коллекционер с более, чем 100 играми, то мы хотим его спросить, зачем ему такое количество. Например, у него может быть магазин игр, или может ему просто нравится их собирать.

Итак, для добавления такого условного правила мы используем метод PHPsometimes() на экземпляре PHPValidator:

Первый аргумент этого метода — имя поля, которое мы проверяем. Второй аргумент — правило, которое мы хотим добавить, если переданная функция-замыкание (третий аргумент) вернёт true. Этот метод позволяет легко создавать сложные правила проверки ввода. Вы можете даже добавлять условные правила для нескольких полей одновременно:

Параметр PHP$input, передаваемый замыканию — объект IlluminateSupportFluent и может использоваться для чтения проверяемого ввода и файлов.

5.3 5.2

добавлено в


5.3

(28.01.2022)


5.2

(08.12.2022)

Проверка ввода массивов

Проверка ввода массива из полей ввода не должна быть сложной. Например, чтобы проверить, что каждый e-mail в данном поле ввода массива уникален, можно сделать так:

Также вы можете использовать символ * при задании сообщений об ошибках ввода в языковых файлах, что позволяет легко использовать одно сообщение для полей на основе массивов:

Хранение паролей


Класс PHPHash содержит методы для безопасного хэширования с помощью Bcrypt.

Хэширование пароля по алгоритму Bcrypt

Проверка пароля по хэшу

Проверка на необходимость перехэширования пароля

Хэширование пароля по алгоритму bcrypt:

$password = Hash::make('secret');

Шифрование


Laravel предоставляет функции для устойчивого шифрования по алгоритму AES с помощью расширения mcrypt для PHP.

Шифрование строки

Внимание: версия 4.2 перешла на 128-битный AES, а 4.1 и ниже использовала 256-битный. Это значит, что преждезакодированные значения после обновления раскодировать не получится — см. руководство по обновлению — прим. пер.

Внимание: обязательно установите 16, 24 или 32-значный ключ key (до версии 4.2 — только 32-значный — прим. пер.) в файле app/config/app.php. Если этого не сделать, зашифрованные строки не будут безопасными.

Расшифровка строки

Изменение алгоритма и режима шифрования

Вывод ошибок


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

Заметьте, мы не привязывали сообщения об ошибках к представлению в нашем маршруте GET. Потому что Laravel проверяет наличие ошибок в данных сессии и автоматически привязывает их к представлению, если они доступны. Поэтому важно помнить, что переменная PHP$errors будет всегда доступна во всех ваших представлениях при каждом запросе, позволяя вам всегда рассчитывать на то, что она определена и может быть безопасно использована.

Переменная PHP$errors будет экземпляром IlluminateSupportMessageBag. Более подробно о работе с этим объектом читайте в его документации.

Переменная PHP$errors привязывается к представлению посредником IlluminateViewMiddlewareShareErrorsFromSession, который входит в состав группы посредников web.

Итак, в нашем примере при неудачной проверке пользователь будет перенаправлен в метод PHPcreate() нашего контроллера, позволяя нам вывести сообщения об ошибках в представлении:

Настройка формата передачи ошибок

Чтобы настроить формат ошибок проверки, передаваемых в сессию при их возникновении, переопределите formatValidationErrors в базовом контроллере. Не забудьте импортировать класс IlluminateContractsValidationValidator (для Laravel 5.0 IlluminateValidationValidator) в начале файла:

AJAX-запросы и проверка ввода

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 4,00 из 5)
Загрузка...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *