Проверка пользовательской формы в laravel 5.4 без использования метода boot () AppServiceProvider - PullRequest
0 голосов
/ 04 февраля 2019

В настоящее время у меня есть форма, которую я проверяю следующим образом:

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        \Validator::extend('custom_validation',function($attribute, $value, $parameters){
             //validation logic
      });
    }
...

Но есть ли способ избежать использования этого метода в AppServiceProvider (или какой-либо сервис по этому вопросу)?

Есть ли способ для меня, например, вставить его где-нибудь в класс контроллера (для простоты)?

Мне нравится вариант, например, использование создания класса запроса (расширение FormRequest) но не уверен, как добавить пользовательский метод в класс запроса.

Любые предложения будут с благодарностью.Спасибо

1 Ответ

0 голосов
/ 04 февраля 2019

Разложить правило валидации в класс, реализующий Illuminate\Contracts\Validation\Rule контракт.(См. Раздел «Использование объектов правил» 1 .)

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class CustomValidation implements Rule
{
    public function passes($attribute, $value) 
    {
        // validation logic
    }

    public function message()
    {
        return 'validation error';
    }
}

Затем запрос расширения пользовательской формы может быть расширен Illuminate\Foundation\Http\FormRequest 2

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use App\Rules\CustomValidation;

class CustomFormRequest extends FormRequest
{

    public function rules()
    {
        return [
            // include rules for other fields
            'custom' => new CustomValidation,
        ];
    }
}

Проверка выполнения в соответствующем контроллере с использованием правил, объявленных в пользовательском запросе формы, с указанием типа, указывающего на запрос метода контроллера

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class CustomActionController extends Controller
{

    protected function create(CustomFormRequest $request)
    {

    }
}
...