Los namespaces en las rutas de Laravel 8 han cambiado. En versiones anteriores de Laravel el namespace del RouteServiceProvider que aplica a la forma en la que utilizamos los controladores en nuestras rutas lucía de la siguiente forma:
<?php
protected $namespace = 'App\Http\Controllers';
En Laravel 8 este namespace ha sido alterado y ahora por defecto es null, lo que significa que el siguiente código en nuestras rutas no funcionará.
<?php
Route::get("users", "UserController@index");
El motivo es que en Laravel 8 al no estar definido el namespace App\Http\Controller Laravel no sabrá encontrar este archivo y su método index. Para solucinarlo tenemos varias alternativas. Definir rutas en Laravel 8
web1.php
<?php
use App\Http\Controllers\UserController;
Route::get("/users", [UserController::class, "index"]);web2.php
<?php
Route::get("/users", "App\\Http\\Controllers\\UserController@index");web3.php
<?php
Route::namespace("App\\Http\\Controllers")->group(function () {
Route::get("/users", "UserController@index");
});
Estas serían algunas de las formas de sortear esta nueva configuración de Laravel, pero si deseamos seguir trabajando de la misma forma que lo hacíamos en versiones anteriores de Laravel, entonces lo más sencillo es modificar el RouteServiceProvider de la siguiente forma.
<?php
namespace App\Providers;
use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\RateLimiter;
use Illuminate\Support\Facades\Route;
class RouteServiceProvider extends ServiceProvider
{
/**
* The path to the "home" route for your application.
*
* This is used by Laravel authentication to redirect users after login.
*
* @var string
*/
public const HOME = '/dashboard';
protected $namespace = "App\\Http\\Controllers"; // add this
/**
* Define your route model bindings, pattern filters, etc.
*
* @return void
*/
public function boot()
{
// ...
$this->routes(function () {
Route::middleware('web')
->namespace($this->namespace) // add this
->group(base_path('routes/web.php'));
Route::prefix('api')
->namespace($this->namespace) // add this
->middleware('api')
->group(base_path('routes/api.php'));
});
}
}
Simplemente sobrescribimos la propiedad namespace del RouteServiceProvider y la utilizamos en las rutas Web y Api a través del método namespace para que todo funcione como siempre.
Curso Laravel 12
Completo 2026
El único curso 100% actualizado que incluye Laravel 12, Livewire 3, Vue 3, React 19 e Inertia 2. Aprende con proyectos reales y las últimas funcionalidades.
star Incluido en cualquier suscripción