Laravel表单验证类的手动启用方式

时间:2021-07-10
本文章向大家介绍Laravel表单验证类的手动启用方式,主要包括Laravel表单验证类的手动启用方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

以下是一个标准的验证类。

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ArticleRequest extends FormRequest
{

    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
           'title' => 'required|unique:posts|max:255',
            'body' => 'required',
        ];
    }

    public function messages()
    {
        return [
            'title.required'    => '标题必填',
            'title.unique'      => '标题已存在',
            'title.max'         => '标题长度不能超过:max',
            ‘body.required’     => '内容必填',
        ];
    }
}

一般我们在控制器中可以以依赖注入的方式启用它,例如:

    use App\Http\Requests\ArticleRequest;

    class ArticleController extends Controller
    {
        public function create(Request $request)
        {
            return view('article.create');
        }
        public function store(ArticleRequest $request)
        {
            //如进入到这里说明参数验证通过,可以继续添加操作
            ...
        }
    }

当然,如果非要把添加的展示与保存都写在create方法中,通过判断区分哪个操作,有什么办法呢?当然有,代码如下:

    class ArticleController extends Controller
    {
        public function create(Request $request)
        {
            if ($request->ajax() && $request->isMethod('POST')) {
                //添加保存逻辑
                //手动启用表单验证类
                $validator = app('App\Http\Requests\ArticleRequest');
            }
            
            //添加展示页面
            return view('article.create');
        }
    }

参考:https://github.com/laravel/framework/issues/7995#issuecomment-82269811

原文地址:https://www.cnblogs.com/luyuqiang/p/14990974.html