错误App \ Http \ Requests \ AddUserRequest :: fails不存在

时间:2018-08-02 03:32:04

标签: laravel laravel-5.6

当我想将数据插入表中并返回一条消息时,出现此错误。 这是我的代码。 输入表单并提交时,发生错误:方法App \ Http \ Requests \ AddUserRequest :: fails不存在。

在路由器中输入代码:

/**************Quản lý user*****************/
Route::get('admin/manage-user', 'UserController@getList')->middleware('admin');
Route::get('admin/manage-user/add', 'UserController@indexAdd')->middleware('admin');
Route::post('admin/manage-user/add', 'UserController@getAdd')->middleware('admin');

UserController中的代码:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\User;
use App\Http\Requests\AddUserRequest;
class UserController extends Controller
{
    //
    public function getList()
    {
        $data = User::paginate(10);
        return view('admin.manage-user',['data' => $data]);
    }
    public function indexAdd()
    {
        return view('admin.add-user');
    }
    public function getAdd(AddUserRequest $request)
    {
        if($request->fails())
        {
            return redirect('admin.add-user')
                            -> withInput()
                            -> withErrors($request);
        }else
        {
            User::create([
                'name' => $request->username,
                'email' => $request->email,
                'password' => Hash::make($request->pass1),
                'level' => 0,
            ]);
            return redirect('admin.add-user')->with('success',"Done!!");
        }
    }
}

代码在视图中

@extends('layouts.admin')
@section('title','Add User')
@section('content')
    <div class="row">
        <div class="col-md-3"></div>
        <div class="col-md-6">
            <div class="box box-primary">
            <div class="box-header with-border">
              <h3 class="box-title">Add User</h3>
            </div>
            <!-- /.box-header -->
            <!-- form start -->
            <form role="form" action="{{url('admin/manage-user/add')}}" method="post">
              <div class="box-body">
                 @csrf
                <div class="form-group">
                    @if (session('success'))
                    <div class="alert alert-success">
                          <p>{{ session('success') }}</p>
                    </div>
                    @endif
                    @if ($errors->any())
                        <div class="alert alert-danger">
                            <b>Lỗi!! Bạn vui vòng kiểm tra lại:</b>
                            <ul>
                                @foreach ($errors->all() as $error)
                                    <li>{{ $error }}</li>
                                @endforeach
                            </ul>
                        </div>
                    @endif
                </div>

在AddUserRequest中:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;
class AddUserRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'username' => 'required|max:200',
            'email' => 'required|email|unique:users',
            'pass1' => 'required|min:6',
            'pass2' => 'same:pass1',
        ];
    }
}

谢谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您不需要检查,因为数据已经通过您的请求进行了验证

public function getAdd(AddUserRequest $request)
    {            
            User::create([
                'name' => $request->username,
                'email' => $request->email,
                'password' => Hash::make($request->pass1),
                'level' => 0,
            ]);
            return redirect('admin.add-user')->with('success',"Done!!");            
    }

答案 1 :(得分:0)

AddUserRequestFormRequest,它没有failure方法。对于FormRequest,您不需要检查fails,它会使用该类提供的rules自动验证您的请求数据,并抛出验证错误,有关详细信息,请检查here。 / p>

对于FormRequest验证,您可以这样使用

public function getAdd(AddUserRequest $request)
{
      //all code here executed after validation

        User::create([
            'name' => $request->username,
            'email' => $request->email,
            'password' => Hash::make($request->pass1),
            'level' => 0,
        ]);

        return redirect('admin.add-user')->with('success',"Done!!");
}

如果您需要在控制器中检查验证,则可以像这样使用manual validation

public function getAdd(Request $request)
{

   $validator = Validator::make($request->all(), [
        'username' => 'required|max:200',
        'email' => 'required|email|unique:users',
        'pass1' => 'required|min:6',
        'pass2' => 'same:pass1',
    ]);

    if($validator->fails())
    {
        return redirect('admin.add-user')
                        -> withInput()
                        -> withErrors($request);
    }else
    {
        User::create([
            'name' => $request->username,
            'email' => $request->email,
            'password' => Hash::make($request->pass1),
            'level' => 0,
        ]);
        return redirect('admin.add-user')->with('success',"Done!!");
    }
}