【发布时间】:2021-12-29 03:21:54
【问题描述】:
我正在使用 FormRequest 来验证数据。我知道这个问题被问了很多次,社区试图通过多种方式解决这个问题,但没有一个能解决我的问题。附上参考链接。
我的问题描述
我有一些复杂的表单,它的一些 HTML 是从我的 JQuery 代码生成的。当 Jquery 代码未填充到表单上时,后端验证和旧值工作正常,但当 JQuery HTML 出现在表单中并提交表单时,旧值和验证错误不起作用。附上图片以获得更多解释。
第 3 步在从 JQuery 填充的付款百分比输入字段中添加值。
表单请求
class AbcRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'payment_term' => ['required'],
'payment_percent' => ['required'],
'other_info' => ['required'],
];
}
}
web.php
Route::group(['middleware' => ['auth', 'approved']], function () {
Route::post('/abc/store', 'AbcController@store')
->name('abc.store');
});
刀片
<form method="post" action="{{ url('/abc/store') }}"
enctype="multipart/form-data">
@csrf
<input type="text" name="payment_term" class="form-control"
value="{{ old('payment_term') }}">
@error('payment_term')
<div class="backend-error"> {{ $message }} </div>
@enderror
</form>
到目前为止我所做的尝试
社区链接
- Laravel Validation MessageBag contains errors however not showing up in blade file
- Laravel 5 validate error message not showing
- Laravel 8 - Old inputs and validation error messages are not working
- https://github.com/laravel/framework/issues/26367
- https://laravel.io/forum/why-laravel-validation-dont-displaying-errors
- https://laracasts.com/discuss/channels/laravel/error-messages-are-not-shown-after-validation
- Laravel 5.2 validation errors not appearing
社区建议的控制器代码
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'payment_term' => ['required'],
'payment_percent' => ['required'],
'other_info' => ['required'],
]);
if ($validator->fails()):
return redirect()->back()
->withErrors($validator)
->withInput();
endif;
}
【问题讨论】:
-
问题似乎出在客户端,但您没有提供这些代码。我也同意@Martin 的回答。
-
我在刀片文件中使用
{{$errors}}打印错误和print_r(old()),但两者都是空的。这意味着后端存在一些问题,laravel 在幕后维护所有这些事情。你有什么建议? -
只有当任何动态 html 出现在我的表单中并提交它然后验证应用并重定向回表单然后
$errors和old()为空时才会发生。这对我来说真的很奇怪,而且真的从来没有遇到过这个奇怪的问题 -
你能分享 jquery 填充的 HTML 吗?字段是否具有唯一的名称属性集?这个 HTML 是否填充在
<form> </form>中? -
jQuery 代码是什么?它是如何添加其他元素的?它们是如何命名的?
标签: php laravel laravel-8 laravel-validation laravel-formrequest