Целевой класс не существует. проблема в laravel 8


Целевой класс не существует. проблема в laravel 8

14.09.2020 12:53:54 Просмотров 47 Источник

Когда создаю новый проект с laravel 8 и получаю эту ошибку.

Illuminate\Contracts\Container\BindingResolutionException целевой класс [SayhelloController] не существует. http://127.0.0.1:8000/users/john

<?php
    
use Illuminate\Support\Facades\Route;
     
Route::get('/', function () {
    return view('welcome');
});  
    
Route::get('/users/{name?}' , [SayhelloController::class,'index']);

В документах laravel класс контроллера маршрутов должен определяться следующим образом

 // Using PHP callable syntax...
Route::get('/users', [UserController::class, 'index']);

// Using string syntax...
Route::get('/users', 'App\Http\Controllers\UserController@index');

Целевой класс

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SayhelloController extends Controller
{
    public function index($name = null)
    {
        return 'Hello '.$name;
    }
}

Так я и сделал именно.

У вопроса есть решение - Посмотреть?

Ответы - Целевой класс не существует. проблема в laravel 8 / Target class does not exist. problem in laravel 8

Является ответом!
Kamlesh Paul

14.09.2020 12:59:32

Laravel 8 обновляет способ записи маршрутов

ссылка на ссылку ref https://laravel.com/docs/8.x/upgrade

в laravel 8 вам нужно использовать like

use App\Http\Controllers\SayhelloController;
Route::get('/users/{name?}' , [SayhelloController::class,'index']);

или

Route::get('/users', 'App\Http\Controllers\UserController@index');

Если вы хотите использовать старый способ

затем в RouteServiceProvider.php

добавьте эту строку

 /**
     * This namespace is applied to your controller routes.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $namespace = 'App\Http\Controllers'; // need to add in Laravel 8
    

public function boot()
{
    $this->configureRateLimiting();

    $this->routes(function () {
        Route::prefix('api')
            ->middleware('api')
            ->namespace($this->namespace) // need to add in Laravel 8
            ->group(base_path('routes/api.php'));

        Route::middleware('web')
            ->namespace($this->namespace) // need to add in Laravel 8
            ->group(base_path('routes/web.php'));
    });
}

Тогда вы можете использовать как

Route::get('/users/{name?}' , [SayhelloController::class,'index']);

или

Route::get('/users', 'UserController@index');
Помочь в развитии проекта:
Закрыть X