0
点赞
收藏
分享

微信扫一扫

自定义laravel表单请求验证类(UserRequest共用一个rules())

西风白羽 2022-02-15 阅读 58
<?php

namespace App\Http\Requests\User;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Str;

class UserRequest extends FormRequest
{
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
    	// 获取路由控制器名称
        $action = Str::after(Route::currentRouteAction(), '@');
        switch ($action) {
            case 'saveUserInfo':
                return [
                    'name'          => 'required|string',
                    'age'           => 'required|integer',
                    'phone'         => 'required|string'
                ];
            case 'getUserInfo':
                return [];
            default:
                return [];
        }
    }

    public function messages()
    {
        $action = Str::after(Route::currentRouteAction(), '@');
        $strings_key = [
            'saveUserInfo.name'    => '用户名',
            'saveUserInfo.age'     =>  '年龄',
            'saveUserInfo.phone'   => '手机号',
        ];
        $strings_val = [
            'required' => '为必填项',
            'string'  => '字符串类型'
        ];
        $rules = $this->rules();
        foreach ($rules as $ruleKey => $ruleVal) {
            // 分割成数组
            $new_arr = explode('|', $ruleVal);
            foreach ($new_arr as $val) {
                $head = strstr($val, ':', true);
                if ($head) {
                    $val = $head;
                }
                $array[$ruleKey . '.' . $val] = $strings_key[$action . '.' . $ruleKey] . $strings_val[$val];
            }
        }

        return $array;
    }
}

返回示例:(字段名称和上边代码不一致,只是示例)
在这里插入图片描述

举报

相关推荐

0 条评论