Die Zielklasse [Api \ UserController] existiert nicht

Nov 24 2020

Ich bekomme diesen Fehler in Laravel 8 nach der Verwendung von PHP Artisan Route: Liste:

Illuminate \ Contracts \ Container \ BindingResolutionException Die Zielklasse [Api \ UserController] ist nicht vorhanden.

Ich habe einen Controller in 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);
    }
}

Routen / api.php:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('users', 'Api\\UserController@index');

Ich bin neu bei Laravel

Antworten

3 Donkarnash Nov 24 2020 at 06:45

Da Sie die use App\Http\Controllers\Api\UserControllerNamespace-Anweisung importieren , können Sie die ::classNotation für die Controller-Klasse verwenden. Es hat auch zusätzliche Vorteile, da IDE im Gegensatz zu Zeichenfolgen zum Pfad navigieren kann

Seit Laravel 8 ist der Standard-Namespace App\Http\Controllersvermutlich nicht mehr im RouteServiceProvider definiert, sondern es bleibt dem Entwickler überlassen, den Standard-Namespace zu definieren, indem die Eigenschaft $ namespace mit dem gewünschten Wert festgelegt wird.

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('users', [UserController::class, 'index']);
MuditGulgulia Nov 24 2020 at 12:33

Auf Larvel 8 können Sie die Route nicht mehr so ​​schreiben wie früher. Die nächste Syntax lautet:

Regler:

<?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');

Oder

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('/Pages', [UserController::class, 'index']);

Dokumente für das Routing