自定义验证规则

<?php

namespace App\Http\Requests\V1;

use Illuminate\Validation\Rule;
use App\Http\Requests\BaseRequest;

class ApplicationRequest extends BaseRequest
{
    public function rules()
    {
        return [
            'icon'        => 'abc'
        ];
    }
}

想自定义一个abc,怎么样定义的。
我按官方的

php artisan make:rule Abc
<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class Abc implements Rule
{
    /**
     * 判断验证规则是否通过。
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        return strtoupper($value) === $value;
    }

    /**
     * 获取验证错误消息。
     *
     * @return string
     */
    public function message()
    {
        return 'The :attribute must be uppercase.';
    }
}

然后

use App\Rules\Abc;

$request->validate([
    'name' => [ new Abc]
     'name' =>'abc'//这里不能直接用吗??
]);
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

$request->validate([
'name' =>new Abc()
]);
直接这样就可以啊

5年前 评论
lov_code 4年前

@cy_echo 我知道可以,但是我想用 'icon' => 'abc'

5年前 评论
marun

@半人间

在AppServiceProvider 的boot方法中可以自定义

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Validator;

class AppServiceProvider extends ServiceProvider
{
    /**
     * 引导任何应用服务。
     *
     * @return void
     */
    public function boot()
    {
        Validator::extend('abc', function ($attribute, $value, $parameters, $validator) {
             return strtoupper($value) === $value;
        });
    }

    /**
     * 注册服务提供器。
     *
     * @return void
     */
    public function register()
    {
        //
    }
}
5年前 评论
elesos

这篇wiki太挫了吧

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!