Псевдоним валидатора находится по адресу: config\app.php
'Validator' => Illuminate\Support\Facades\Validator::class,
Класс фасада описан в файле: \vendor\laravel\framework\src\Illuminate\Support\Facades\Validator.php
За загрузку данных отвечает: Illuminate\Validation\ValidationServiceProvider::class,
Файл содержит код сервис-провайдера: \vendor\laravel\framework\src\Illuminate\Validation\ValidationServiceProvider.php
\vendor\laravel\framework\src\Illuminate\Validation\Factory.php
Здесь метод make возвращает объект валидатора. По сути из контроллера мы обращаемся к классу Factory.
Идем в \app\Http\Controllers\Admin\ContactController.php
public function show(Request $request, $id=FALSE) {
// Если запрос - метод post, то валидируем данные:
if($request->isMethod('post')) {
$messages = [];
$validator = Validator::make($request->all(), [
'name' => 'required'
], $messages);
// Если валидация была завершена с ошибками
if($validator->fails()) {
return redirect()->route('contact')->withErrors($validator)->withInput(); // ошибки будут сохранены в сессию
}
}
return view('default.contact', ['title'=>'Contacts']);
}
}
Сформируем новый класс для валидации данных через консоль:
php artisan make:request ContactRequest
Создается файл: \app\Http\Requests\ContactRequest.php
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class ContactRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// return false; // доступ пользователя к указанному ресурсу запрещен
return true; // разрешим доступ пользователю в ресурсу
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
// возвращает массив правил валидации
public function rules()
{
return [
'name' => 'required'
];
}
// можно описать дополнительный метод messages
public function messages()
{
return [
];
}
}
Изменим машрутизатор \routes\web.php:
Route::get('/contact',['uses'=>'Admin\ContactController@show','as'=>'contact']);
Route::post('/contact',['uses'=>'Admin\ContactController@store']);
Изменим контроллер в \app\Http\Controllers\Admin\ContactController.php
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Requests\ContactRequest;
use App\Http\Controllers\Controller;
use Validator;
class ContactController extends Controller
{
public function store(ContactRequest $request, $id=FALSE) {
// Если запрос - метод post, то валидируем данные:
if($request->isMethod('post')) {
}
return view('default.contact', ['title'=>'Contacts']);
}
public function show() {
return view('default.contact', ['title'=>'Contacts']);
}
}
четверг, 20 июля 2017 г.
LARAVEL. ВАЛИДАЦИЯ ДАННЫХ. ЧАСТЬ 2.
Подписаться на:
Комментарии к сообщению (Atom)
Materialize-css. Футер
Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html
-
Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html
-
Простое API. HTTP. Урок 1. Справка о методе PUT.
-
Класс Request - абстракция отправляемого запроса пользователя.
Комментариев нет:
Отправить комментарий