Laravel 5.8 Пользовательская ошибка проверки: «класс не существует» - PullRequest
1 голос
/ 10 мая 2019

Я новичок в 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, а не в стандартной папке запросов.

Ответы [ 3 ]

1 голос
/ 10 мая 2019

Вы не включили пространство имен класса вашего пользовательского запроса.Добавить use App\Http\Requests\StoreBooksRequest; после use Illuminate\Http\Request;

0 голосов
/ 11 мая 2019

Когда вы выполняете php artisan make:request Myrequestname, Laravel создает файл в подкаталоге App \ Http \ Request, поэтому вам нужно быть осторожным, чтобы использовать правильное пространство имен, еще одна вещь, которую вы всегда должны были соблюдать, это имя, которое вы используете , - это не тот же Mycontroller, что и mycontroller, и является наихудшим, если ваш сервер является сервером Linux, потому что файловая система делает различие между заглавными буквами.

0 голосов
/ 10 мая 2019

Вы, кажется, используете неправильное пространство имен для

 Class App\Http\Controllers\StoreBooksRequest

Ваше пространство имен установлено на namespace App\Http\Requests;, когда вы вызываете его из контроллера, если вы переместите свой класс на App\Http\Requests.

Также не забудьте импортировать класс в свой контроллер

use StoreBooksRequest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...