Ошибка "Target class does not exist" в Laravel
Столкнулся с такой проблемой. Создал контроллер через консоль с помощью artisan, все создалось удачно. Однако, когда я привязал этот контролер к роуту, то возникает ошибка Target class [PageController] does not exist.
web.php:
Route::get('/', [PageController::class, 'home'])->name('home');
PageController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PageController extends Controller {
public function home() {
return view('home');
}
}
Ответы (2 шт):
Возможно, вы не указали пространство имён в web.php
Попробуйте добавить
use App\Http\Controllers;
после открытия php тега
Если вы не хотите подключать простронсво имён, можно использовать использовать другой синтаксис:
Route::get('/', 'PageController@home'])->name('home');
Попробуйте такой вариант если используется Laravel 8
Route::get('/', [App\Http\Controllers\PageController::class, 'home'])->name('home');
или
Route::get('/', 'App\Http\Controllers\PageController@home')->name('home');
По умолчанию в Laravel 8 не подключается пространство имен App\Http\Controllers, поэтому следующее работать не будет
Route::get('/', 'PageController@home')->name('home');
Подключить пространство имен для контроллеров можно определив в app\Provierds\RouteServiceProvider.php свойство
protected $namespace = 'App\Http\Controllers';
