Laravel验证 对数组上的成员函数调用失败()



我正在制作一个只能使用某些值的表单。但是每当输入正确答案时,它的返回和数组任何人都知道我是否可以这样做,或者我是否必须更改太多东西

$validator = $request->validate([
'wattage' => ['required', new CertainValue()]
]);
if ($validator->fails()) {
Log::error('validatiefout:', $request->all());

return redirect('/test');
}

CertainValue RULE(使用 App\Rules\CertainValue;(

<?php
namespace AppRules;
use IlluminateContractsValidationRule;
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.';
}
}

刀片中的错误代码.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

从文档中:

如果您不想在请求中使用验证方法,则可以 使用验证程序外观手动创建验证程序实例。这 外观上的 make 方法生成一个新的验证程序实例:

use IlluminateHttpRequest;
use IlluminateSupportFacadesValidator;
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 IlluminateSupportFacadesValidator;
$validator = Validator::make(
$request->all(),
['wattage' => ['required', new CertainValue]]
);
if ($validator->fails()) {
Log::error('validatiefout:', $request->all());
return redirect('/test')
->withErrors($validator)
->withInput();
}

最新更新