首页 > 解决方案 > 在我的控制器中声明更多数据库时,Laravel 表单验证不起作用

问题描述

我声明了一个包含数据库的变量,以便刀片可以选择,但是这样做时,验证不起作用。请帮我。非常感谢。

this is the variable I call in the database to use select in the blade.

public function new_department(){
    //return view('admin.new-department');

    $manage_faculties=DB::table('faculties')->orderBy('id','asc')->get();

    $all_manage_faculties=view('admin.new-department')->with('manage_faculties', $manage_faculties);

    return view('layouts.master')->with('admin.new-department', $all_manage_faculties);
}

Here is the validation I use in the insert information and database.

 public function save_new_department(Request $request){
    $data = [];
    $data['department_name'] = $request->input('department_name');
    $data['description'] = $request->input('description');
    $data['faculty_id'] = $request->input('faculty_name');


    if($request->isMethod('post')){
        $validator = Validator::make($request->all(), [
            'department_name' => 'required|min:3|max:100|unique:departments',
            'description' => 'required|max:500',
        ]);

        if ($validator->fails()) {
            return back()->with('toast_error', $validator->messages()->all()[0])->withInput();
        }

        DB::table('departments')->insert($data);
        return redirect('/admin/departments/new')->withSuccess('Post Created Successfully!');
    }

}

display it in the blade

输入数据后无论真假,都不可能在屏幕上报错。输入数据后无论真假,都不可能在屏幕上报错。

        <form class="mt-3"method="post" action="{{ url('admin/department/new-department') }}">
            {{csrf_field()}}
                <div class="modal-content">
                    <div class="modal-header bg-primary">
                        <h5 class="modal-title">Create a Department</h5>
                    </div>
                    <!--end of modal head-->
                    <div class="modal-body">

                        <div class="form-group row align-items-center" {{ $errors->get('name') ? 'has-error' : '' }}>
                            <label class="col-2">Department</label>
                            <input class="form-control col" type="text" placeholder="Department name" name="department_name" required/>
                            @foreach($errors->get('name') as $error)
                                <span class="help-block">{{ $error }}</span>
                            @endforeach
                        </div>

                        <div class="form-group row align-items-center">
                            <label class="col-2">Faculty</label>
                            <select  name="faculty_name" class="form-control col" required>
                                <option value="" selected>Select a Faculty</option>

                                @foreach($manage_faculties as $key => $cate_pro)
                                    <option value="{{$cate_pro->id}}">{{$cate_pro->faculty_name}}</option>
                                @endforeach

                            </select>
                        </div>

                        <div class="form-group row">
                            <label class="col-2">Description</label>
                            <textarea class="form-control col" rows="10" placeholder="Write something here..." name="description" required  ></textarea>
                        </div>

                    </div>
                    <!--end of modal body-->
                    <div class="modal-footer">
                        <button role="button" class="btn btn-primary" type="submit">
                            Post
                        </button>
                    </div>
                </div>
        </form>

标签: phplaravel

解决方案


你可以在这里查看在 Laravel 中显示错误。

你为什么放:

{{ $errors->get('name') ? 'has-error' : '' }}

在像属性一样的“div”内?


推荐阅读