定制表单验证在laravel 5.4不使用AppServiceProvider引导()方法

问题描述 投票:0回答:1

目前,我有一个表格,我验证,像这样:

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

但有我避免了不得不把这个方法在AppServiceProvider(或任何服务提供这个问题)的方法吗?

有没有办法对我来说,在某个地方,例如控制器类插入(为简单起见)?

我喜欢像使用发出请求类(扩展FormRequest),但不知道如何自定义方法添加到请求类的变体。

任何建议将不胜感激。谢谢

laravel validation laravel-5 php-7
1个回答
0
投票

分解出的验证规则为实现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)
    {

    }
}
© www.soinside.com 2019 - 2024. All rights reserved.