laravel - Laravel 验证调用数组上的成员函数失败()
问题描述
我正在制作一个只能使用某些值的表格。但是,每当输入正确答案时,它的返回值和数组都会有人知道我是否可以这样做,或者我是否必须更改太多东西
$validator = $request->validate([
'wattage' => ['required', new CertainValue()]
]);
if ($validator->fails()) {
Log::error('validatiefout:', $request->all());
return redirect('/test');
}
确定值规则(使用 App\Rules\CertainValue;)
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class CertainValue implements Rule
{
public function __construct()
{
//
}
public function passes($attribute, $value)
{
if ($value === "5") {
return true;
} else {
return false;
}
}
public function message()
{
return 'The validation error message.';
}
}
Blade.php 中的错误代码(修复后我不会在 ul 中恢复错误)
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
解决方案
如果你想控制验证失败时发生的事情,你不能使用$request->validate()
,因为它会在验证失败时抛出异常并自动返回,如果验证通过$request->validate()
将从请求中返回经过验证的数据而不是Validator
实例,所以你必须手动Validator
如果您想重定向自己,请创建。
从文档:
如果你不想在请求上使用 validate 方法,你可以使用 Validator 门面手动创建一个验证器实例。门面的 make 方法生成一个新的验证器实例:
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
// Store the blog post...
}
所以在你的情况下,它会是这样的:
use Illuminate\Support\Facades\Validator;
$validator = Validator::make(
$request->all(),
['wattage' => ['required', new CertainValue]]
);
if ($validator->fails()) {
Log::error('validatiefout:', $request->all());
return redirect('/test')
->withErrors($validator)
->withInput();
}
推荐阅读
- rest - 网络设备的 Openapi 规范设计
- c# - 在 C# 中使用 Spire.Office 将 Excel 工作表导出到 Word 维护合并的单元格
- ios - 保存数据时出现问题,将 CoreData 与 SwiftUI 一起使用
- reactjs - 如何用玩笑模拟 Firebase analitycs?
- android - 为什么 Android 将我的一些可绘制对象反转为深色主题(夜间)而不是其他对象?
- c - Eclipse 在另一个 c 文件中调用函数时给出未定义的引用
- django - Django 从数据库中填充表
- javascript - Bot在一段时间后编辑自己的消息
- struct - malloc - 硬故障 - Keil uVision
- sql - 使用 SQL 和 VB.NET 在 2 个日期值之间选择数据