четверг, 20 июля 2017 г.

LARAVEL. ВАЛИДАЦИЯ ДАННЫХ. ЧАСТЬ 2.

Псевдоним валидатора находится по адресу: 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']);
    }
}


Комментариев нет:

Отправить комментарий

Materialize-css. Футер

Сделаем футер и прижмем к низу страницы. Документация: https://materializecss.com/footer.html