(转载非原创)Laravel表单验证类的手动启用方式

2021-07-12 09:47:53 浏览数 (1)

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

代码语言:javascript复制
namespace AppHttpRequests;

use IlluminateFoundationHttpFormRequest;

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’     => '内容必填',
        ];
    }
}

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

代码语言:javascript复制
    use AppHttpRequestsArticleRequest;

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

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

代码语言:javascript复制
    class ArticleController extends Controller
    {
        public function create(Request $request)
        {
            if ($request->ajax() && $request->isMethod('POST')) {
                //添加保存逻辑
                //手动启用表单验证类
                $validator = app('AppHttpRequestsArticleRequest');
            }
            
            //添加展示页面
            return view('article.create');
        }
    }

转载来源:https://www.cnblogs.com/luyuqiang/p/14990974.html

0 人点赞