【问题标题】:Laravel 5.8 Custom validation error 'class does not exist'Laravel 5.8 自定义验证错误“类不存在”
【发布时间】:2019-05-11 07:26:59
【问题描述】:

我是 laravel 的新手,我正在尝试让我的自定义验证规则在我的控制器上工作。 它表明该类不存在。

ReflectionException thrown with message "Class App\Http\Controllers\StoreBooksRequest does not exist"

我使用 artisan 命令创建了请求文件。

lando artisan make:request StoreBooksRequest

这是我的请求文件:

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreBooksRequest 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 [
            //
            'title' => 'required|unique:books|max:150',
            'description' => 'required',
            'isbn' => 'required|max:20'
        ];
    }
}

这是我试图让自定义请求规则起作用的控制器:

namespace App\Http\Controllers;

use App\Book;
use Illuminate\Http\Request;

class BooksController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $books = Book::all();

        return view('books.index', compact('books'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('books.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(StoreBooksRequest $request)
    {
        $book = new Book();

        $book->title = $request->title;
        $book->description = $request->description;
        $book->isbn = $request->isbn;

        $book->save();
    }

我认为问题在于请求文件位于 Controllers 文件夹中而不是标准 Requests 文件夹中的错误。

【问题讨论】:

    标签: php laravel-5


    【解决方案1】:

    您没有包含自定义请求类的命名空间。在use Illuminate\Http\Request;之后添加use App\Http\Requests\StoreBooksRequest;

    【讨论】:

      【解决方案2】:

      您似乎使用了错误的命名空间

       Class App\Http\Controllers\StoreBooksRequest
      

      当你从控制器调用命名空间时,你的命名空间设置为namespace App\Http\Requests;,如果你将你的类移动到App\Http\Requests

      另外,不要忘记在控制器中导入类

      use StoreBooksRequest
      

      【讨论】:

      • 非常感谢! StoreBooksRequest 已经在 App\Http\Requests 中,但导入它就可以了。
      【解决方案3】:

      当你执行php artisan make:request Myrequestname 时,Laravel 会在 App\Http\Request 子目录中创建文件,所以你需要小心使用正确的命名空间,另一件你总是要小心的事情是关于你使用的名称, 与 mycontroller 不同,如果您的服务器是 Linux 服务器,则最糟糕的是,因为文件系统会区分大小写。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-12-23
        • 1970-01-01
        • 2018-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-21
        相关资源
        最近更新 更多