Laravel 中有多种验证数据的方法。
我更喜欢不要在控制器中编写验证检查并将其编写在单独的表单请求中并将该请求对象用作参数。
假设我们有一个用户模型,并且需要一个名称以及控制器的唯一方法store
和update
方法,您可以简单地使用UserRequest
如下所述的对象。
创建表单请求类
php artisan make:request UserRequest
class UserRequeset extends Request
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$id = request('id') ?: 'NULL'; // To identify if a request is for store or update just take autoincremented id parameter from request
return [
'name' => "required|unique:users,name,$id"
];
// You can also customize your validation for different methods as below
switch ($this->method()) {
case 'POST':
return [
// validation for post method
];
break;
case 'PUT':
return [
// validation for put method
];
break;
default:
return [];
break;
}
}
public function messages()
{
return [
"name.required" => "User name is required",
"name.unique" => "User name should be unique"
// or you can customize this using language
"name.required" => __("user.required_message"),
"name.unique" => __("user.unique_message")
];
}
}
在UserController
use App\Http\Requests\UserRequest;
class UserController extends Controller
{
public function store(UserRequest $request)
{
// Enter your code just after validation part no need of any validation code here
}
public function update(UserRequest $request)
{
// Enter your update code just after validation part no need of any validation code here
}
}