在MyRequest中:
public function authorize()
{
return true;
}
public function rules()
{
switch($this->method())
{
case 'GET':
case 'DELETE':
{
return [];
}
case 'POST':
{
dd('here working'); // if remove this line, it does not working, page just like refesh
return [
'name' => 'required',
'price' => 'required',
];
}
case 'PUT':
case 'PATCH':
{
return [
'name' => 'required',
'price' => 'required',
];
}
default:break;
}
}
在我的控制器中:
public function store(MyRequest $request)
{
}
我确定应用程序运行到dd()函数以防#34; POST"。但是,如果我删除此行(dd()函数),页面像刷新,它不验证数据。
答案 0 :(得分:1)
实际上我认为它确实验证了您的数据。表单提交后,检查浏览器devtools中的响应代码。如果状态代码为 302 ,则可能是模板中有响应附带的变量Illuminate\Support\MessageBag $errors
。 How to use $errors
is explained here.
如果验证失败,Laravel通常会将您重定向回上一页(本例中为表单页面),状态代码为 302 ,并另外将变量$errors
注入用于向用户显示消息的模板。将以下内容粘贴到您正在处理的表单旁边的刀片式模板中,您可能会发现不完全页面刷新:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif