在Laravel中验证传入请求的标准方法如下:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class PostController extends Controller
{
/**
* Show the form to create a new blog post.
*
* @return Response
*/
public function create()
{
return view('post.create');
}
/**
* Store a new blog post.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$validatedData = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// The blog post is valid...
}
}
验证控制器中的请求没有任何问题,但是我如何才能将验证逻辑写出控制器以保持其整洁而不破坏单一职责原则?
答案 0 :(得分:4)
您可以提出自己的表单请求。
php artisan make:request StorePostRequest
创建一个请求public function rules()
{
return [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
];
}
public function store(StorePostRequest $request)
{
// do something
}
有关更多信息: https://laravel.com/docs/5.7/validation#creating-form-requests
答案 1 :(得分:3)
使用Laravel提供的表单请求:
https://laravel.com/docs/5.7/validation#creating-form-requests
并确保您的控制器使用ValidatesRequests
特性。
在执行控制器动作之前,将对表单请求进行验证,并包含验证规则和授权逻辑。