2

im getting this error in Laravel 8 after using php artisan route:list:

Illuminate\Contracts\Container\BindingResolutionException Target class [Api\UserController] does not exist.

I have a 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);
    }
}

routes/api.php:

<?php

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

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

Im new at Laravel

2 Answers2

4

Since you are importing the use App\Http\Controllers\Api\UserController namespace statement you can use the ::class notation for controller class. It will also have added benefits as IDE will be able to navigate to the path unlike string

Since Laravel 8, I guess the default namespace is no longer defined to be App\Http\Controllers in the RouteServiceProvider, rather it is left upto the developer to define the default namespace by setting $namespace property with the desired value.

<?php

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

Route::get('users', [UserController::class, 'index']);
Donkarnash
  • 12,433
  • 5
  • 26
  • 37
0

On Larvel 8 you can't wright route as we used to before, the next syntax is this

Controller:

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

Or

<?php

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

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

Docs for routing

Mudit Gulgulia
  • 1,131
  • 7
  • 21