laravel - 处理来自请求的验证错误
问题描述
我在处理错误时遇到了一些麻烦。
我提出了一个自定义请求:
public function rules()
{
return [
"name" => "required|min:3|max:50|string",
"price" => "required|numeric",
"visibility" => "required",
"description" => "required|string|min:10|max:50",
"image_url" => 'image|mimes:jpeg,png,jpg,gif,svg|max:2048',
"genre" => "required"
];
}
在我的控制器中,我有:
public function store(dishValidate $request)
{
$data = $request->validated();
$file = $request->file('image');
$extension = $file->getClientOriginalExtension();
Storage::disk('public')->put($file->getFilename() . '.' . $extension, File::get($file));
$dish = new Dish;
$dish["name"] = $data["name"];
$dish["description"] = $data["description"];
$dish["price"] = $data["price"];
$dish["visibility"] = $data["visibility"];
$dish["image_url"] = $file->getFilename() . '.' . $extension;
$dish->getRestaurant()->associate(Auth::User()->getRestaurant->id);
$dish->getGenre()->associate($data["genre"]);
$dish->save();
$item = "Hai creato un nuovo piatto con successo!";
return route("success", compact("item"));
}
在我的刀片中:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
我似乎无法访问任何错误。如果验证失败,是否还有办法保留输入?
解决方案
您可以像这样定义验证规则。
方法:-1
$request->validate([
'name' => 'required',
'email' => 'required',
'img' => 'required | mimes:jpeg,jpg,png',
]);
然后在刀片视图文件中,您将使用 $error->all() 返回错误数组
@foreach ($errors->all() as $error)
<p>{{ $error }}</p>
@endforeach
或者您也可以在另一个方法下面这样定义它(用于在控制器函数中获取验证错误),
方法:-2
步骤:1-包括验证器类
use Illuminate\Support\Facades\Validator;
第 2 步:在控制器函数中定义规则
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
'c_password' => 'required|same:password',
]);
print_r($$validator->messages());
如果您想在 API 中进行验证,我建议使用方法 2。
推荐阅读
- visual-studio-code - VSCode使用JS打开特定行号的文件
- django - 我正在尝试在我的 django 项目中使用 css 和图像等静态文件,但静态文件未显示在我的模板页面中
- android - 如何将片段\活动的标题设置为工具栏、项目模板
- copy - 将形状从一张纸复制并粘贴到另一张纸上
- regex - PowerShell正则表达式忽略直到字符串匹配,包括字符串匹配
- python - ValueError:操作数无法与形状一起广播 (2,176525) (300,176525)
- javascript - 如何发送带有 BinaryArray 的 json?
- salesforce - Salesforce 社区 - 通过 Apex 登录的用户不会更新当前用户
- python - 如何使用 Python/pandas 获取带有行摘要的分钟/小时财务数据?
- nativescript - 失败的“tns run android –bundle”无效的选项对象