首页 > 解决方案 > 在视图 laravel 中显示验证错误消息

问题描述

我尝试在视图中显示验证错误消息,store function把 “添加输入”和“编辑输入”放在同一个视图中,所以我不知道哪个函数有验证错误update function

这是我的功能存储代码...

$rules = [
         'section_name' => 'required|min:3',
         'section_pic' => 'image',
         ];

$customMessages = [
                  'section_name.required' => 'Please Enter Section Name ',
                  'section_name.min' => 'Section Name Must Be At Least 3 Character ',
                  'section_pic.image'  => 'You Should Choose Images Only',
                  ];

 $this->validate($request, $rules, $customMessages);

  here some add code .....

 return redirect('/Sections')->with('success_store','Success ! Your Section Added Successfully');

这是我的功能更新代码...

$rules = [
         'section_name' => 'required|min:3',
         'section_pic' => 'image',
         ];

$customMessages = [
                  'section_name.required' => 'Enter Section Name You Want To Update to',
                  'section_name.min' => 'To Update Section Name Must Be At Least 3 Character ',
                  'section_pic.image'  => 'To Update You Should Choose Images Only',
                  ];

$this->validate($request, $rules, $customMessages);

some update code .....

return redirect('/Sections')->with('success_update','Success ! Your Section Updated Successfully');

在我看来,这...

@if($errors->any())
    <script type="text/javascript">
        function openModal() {
            $("#section_add").modal("show");
        }
        window.onload = openModal;
    </script>
@endif

@if($errors->any())
    <script type="text/javascript">
        function openModal() {
            $("#section_edit").modal("show");
        }
        window.onload = openModal;
    </script>
@endif

这是我在添加模式中的添加输入...

<input type="text" name="section_name" class="form-control name"
value="{{ old('section_name') }}" autofocus required>

@error('section_name')
<small class="text-danger">{{ $message }}</small>
@enderror

这是我在编辑模式中的编辑输入...

<input type="text" name="section_name" class="form-control name"
value="{{ old('section_name') }}" autofocus required>

@error('section_name')
<small class="text-danger">{{ $message }}</small>
@enderror

标签: laravel

解决方案


我相信解决您的问题的最简单方法是使用命名错误包。您可以通过.. 手动创建验证Validator::make()

因此,理想情况下,您应该像这样修改您的控制器逻辑,(我将仅编写其中一种方法作为示例,然后您可以在另一种方法中复制相同的逻辑)

public function store(Request $request)
{

  $rules = [
    'section_name' => 'required|min:3',
    'section_pic' => 'image',
   ];

  $customMessages = [
    'section_name.required' => 'Please Enter Section Name ',
    'section_name.min' => 'Section Name Must Be At Least 3 Character ',
    'section_pic.image'  => 'You Should Choose Images Only',
  ];

 $validator = Validator::make($request->all(), $rules, $customMessages);

 if ($validator->fails()) {
        return redirect('Sections/create')
                    ->withErrors($validator,'store') // or whatever key you give
                    ->withInput();
    }
  return redirect('/Sections')->with('success_store','Success ! Your Section Added Successfully');
}

在您的视图中,您现在可以使用指定的键获取错误,即在这种情况下存储, {{ $errors->store->all() }}. 希望有帮助


推荐阅读