Целевой класс [Api \ UserController] не существует
Я получаю эту ошибку в Laravel 8 после использования маршрута php artisan: list:
Illuminate \ Contracts \ Container \ BindingResolutionException Целевой класс [Api \ UserController] не существует.
У меня есть контроллер в App \ Http \ Controllers \ Api:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index()
{
$users = User::all(); return responde()->json($users);
}
}
маршруты / api.php:
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('users', 'Api\\UserController@index');
Я новичок в Laravel
Ответы
Поскольку вы импортируете use App\Http\Controllers\Api\UserControllerоператор пространства имен, вы можете использовать ::classобозначение для класса контроллера. Это также будет иметь дополнительные преимущества, поскольку IDE сможет перемещаться по пути, в отличие от строки
Начиная с Laravel 8, я предполагаю, что пространство имен по умолчанию больше не определено App\Http\Controllersкак находящееся в RouteServiceProvider, скорее разработчику остается определить пространство имен по умолчанию, установив для свойства $ namespace желаемое значение.
<?php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('users', [UserController::class, 'index']);
На Larvel 8 вы не можете составить маршрут, как мы использовали раньше, следующий синтаксис:
Контроллер:
<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
user App\Models\User;
class UserController extends Controller
{
public function index()
{
$users = User::all(); return responde()->json($users);
}
}
api.php:
<?php
use Illuminate\Support\Facades\Route;
Route::get('users', '\App\Http\Controllers\Api\UserController@index');
Или же
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;
Route::get('/Pages', [UserController::class, 'index']);
Документы для маршрутизации