我正在使用Laravel 5.8,我已经创建了这个控制器方法,用于在DB中创建一些记录。
public function doTheUpload(Request $request)
{
try{
$request->validate([
'video' => 'nullable|mimes:mp4',
'video_thumb' => 'required|mimes:jpg,png,jpeg',
'video_name' => 'required',
'video_desc' => 'nullable',
'available_download' => 'nullable',
],[
'video.mimes' => 'video file format is not valid',
'video_thumb.required' => 'uploading video thumbnail is required',
'video_name.required' => 'you must enter name of video',
'video_thumb.mimes' => 'image thumbnail file format is not valid',
]);
// Do the upload process
}catch(\Exception $e){
dd($e);
}
}
但这将不起作用,并返回以下错误:
给定的数据无效。
这基本上是因为表单验证请求,当我从方法中删除这些验证时,它将完全正常工作。
那么,返回此错误的表单请求验证有什么问题呢?
如果你知道,请让我知道...我真的真的很感激任何想法或建议,从你们。
- 谢谢-谢谢
2条答案
按热度按时间rggaifut1#
当你使用Laravel的验证时,你应该让Laravel处理错误,因为当一个规则失败时,Laravel会自动抛出一个异常。所以第一个建议是不要在你的验证例程中使用try-catch块。
正如Laravel文件所述:
显示验证错误
那么,如果传入的请求参数没有通过给定的验证规则怎么办呢?如前所述,Laravel会自动将用户重定向回他们之前的位置。此外,所有的验证错误都会自动刷新到会话中。
此外,我建议您不要在控制器中使用验证,因为根据良好的实践,建议创建单独的formRequest进行验证,因此您应该稍微修改控制器以包含validator类:
现在你必须创建一个表单请求,可能使用
php artisan make:request UploadVideoRequest
这个命令将在app/Http/Requests
下创建一个表单请求类,你应该将它填充为:通过使用这种方法,Laravel验证用户输入并通过异常管理任何错误。
祝你好运
lp0sw83n2#
必须准确指定要验证的内容:
我的代码中的一个示例: