Ви використовуєте Laravel 8. У новій інсталяції Laravel 8 префікс простору імен не застосовується до ваших груп маршрутів, в які завантажуються ваші маршрути.
"У попередніх випусках Laravel, що RouteServiceProviderмістило $namespaceвластивість. Значення цієї властивості буде автоматично додано до префіксу до визначень маршруту контролера та викликів actionпомічника / URL::actionметоду. У Laravel 8.x ця властивість є nullза замовчуванням. Це означає, що немає автоматичної префікса простору імен зробить Laravel ". Документи Laravel 8.x - Примітки до випуску
Вам потрібно було б використовувати повне ім’я класу для своїх контролерів, коли вони посилаються на них у своїх маршрутах, коли не використовують префікс простору імен.
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
Route::get('/users', 'App\Http\Controllers\UserController@index');
Якщо ви віддаєте перевагу старому способу:
App\Providers\RouteServiceProvider:
public function boot()
{
...
Route::prefix('api')
->middleware('api')
->namespace('App\Http\Controllers')
->group(base_path('routes/api.php'));
...
}
Зробіть це для будь-яких груп маршрутів, для яких потрібно оголошений простір імен.
$namespaceвластивість:
Хоча в примітках до випуску є згадка про $namespaceвластивість, яку потрібно встановити для вас, RouteServiceProviderі коментувати у вашій, RouteServiceProviderце не впливає на ваші маршрути. Наразі це лише для додавання префіксу простору імен для генерації URL-адрес до дій. Отже, ви можете встановити цю змінну, але вона сама по собі не додаватиме цих префіксів простору імен, вам все одно доведеться переконатися, що будете використовувати цю змінну при додаванні простору імен до груп маршрутів.
Ця інформація зараз знаходиться в Посібнику з оновлення
Документи Laravel 8.x - Посібник з оновлення - Маршрутизація
Те, що показує Посібник з оновлення, є важливою частиною того, що ви визначаєте простір імен для своїх груп маршрутів. Встановлення $namespaceзмінної само по собі допомагає лише у формуванні URL-адрес для дій.
Знову ж таки, і я не можу наголосити на цьому досить важливо, важливою частиною є встановлення простору імен для груп маршрутів, що вони просто роблять, посилаючись на змінну-член $namespaceбезпосередньо у прикладі.
Оновлення:
Якщо ви встановили нову копію Laravel 8, починаючи з версії 8.0.2, laravel/laravelви можете прокоментувати protected $namespaceзмінну-член у, RouteServiceProviderщоб повернутися до старої версії , оскільки групи маршрутів налаштовані на використання цієї змінної-члена для простору імен для груп.
Тільки причина Розкоментувати щоб додати префікс простору імен для контролерів , призначених маршрутів , тому що групи маршрутизації налаштовані використовувати цю змінну в якості простору імен:
...
->namespace($this->namespace)
...
Apiпапки.?