#php #laravel #laravel-8
#php #laravel #laravel-8
Вопрос:
После обновления Laravel v:7
до 8
я получаю ошибку ниже, и я не могу ее разрешить
IlluminateContractsContainerBindingResolutionException
Target class [FrontendHomeController] does not exist.
мой контроллер namespace
и структура каталогов:
|- app
|- Http
|- Controllers
|- Frontend
-HomeController.php
- Controller.php
Маршрут:
Route::namespace('Frontend')->group(function () {
Route::get('/', 'HomeController@index')->name('home');
});
и затем HomeController.php
<?php
namespace AppHttpControllersFrontend;
use AppHttpControllersController;
use IlluminateHttpRequest;
class HomeController extends Controller
{
public function index()
{
dd('aaaa');
}
public function create()
{
//
}
public function store(Request $request)
{
//
}
public function show($id)
{
//
}
public function edit($id)
{
//
}
public function update(Request $request, $id)
{
//
}
public function destroy($id)
{
//
}
}
использование приведенной ниже команды также не смогло решить мою проблему:
php artisan clear-compiled
php artisan optimize:clear
composer dump-autoload
Ответ №1:
В laravel 8 вам нужно сделать это следующим образом:
use AppHttpControllersFrontendHomeController;
Route::get('/', [HomeController::class, 'index'])->name('home');
В версии V8 Laravel не будет выполнять автоматическое добавление префикса в пространство имен.
Комментарии:
1. Автоматическое добавление префикса в пространство имен все еще теоретически возможно, но оно активно не рекомендуется и больше не входит в стандартные шаблоны по умолчанию.
2. Для Laravel 8.x есть документы: laravel.com/docs/8.x/controllers#basic-controllers