Estás usando Laravel 8. En una nueva instalación de Laravel 8, no se aplica ningún prefijo de espacio de nombres a tus grupos de rutas en los que se cargan tus rutas.
"En versiones anteriores de Laravel, RouteServiceProvidercontenía una $namespacepropiedad. El valor de esta propiedad se agregaría automáticamente a las definiciones de ruta del controlador y a las llamadas al método actionauxiliar URL::action. En Laravel 8.x, esta propiedad es nullpor defecto. Esto significa que no hay prefijos automáticos de espacio de nombres será realizado por Laravel ". Documentos de Laravel 8.x - Notas de la versión
Debería utilizar el nombre de clase totalmente calificado para sus controladores cuando se refiera a ellos en sus rutas cuando no utilice el prefijo del espacio de nombres.
use App\Http\Controllers\UserController;
Route::get('/users', [UserController::class, 'index']);
Route::get('/users', 'App\Http\Controllers\UserController@index');
Si prefiere la forma antigua:
App\Providers\RouteServiceProvider:
public function boot()
{
...
Route::prefix('api')
->middleware('api')
->namespace('App\Http\Controllers')
->group(base_path('routes/api.php'));
...
}
Haga esto para cualquier grupo de rutas para el que desee un espacio de nombres declarado.
La $namespacepropiedad:
Aunque se menciona una $namespacepropiedad que se establecerá en usted RouteServiceProvideren las notas de la versión y se comentará en su, RouteServiceProvideresto no tiene ningún efecto en sus rutas. Actualmente solo sirve para agregar un prefijo de espacio de nombres para generar URL a las acciones. Por lo tanto, puede configurar esta variable, pero por sí sola no agregará estos prefijos de espacio de nombres, aún tendrá que asegurarse de usar esta variable al agregar el espacio de nombres a los grupos de rutas.
Esta información ahora está en la Guía de actualización
Documentos de Laravel 8.x - Guía de actualización - Enrutamiento
Con lo que muestra la Guía de actualización, lo importante es que está definiendo un espacio de nombres en sus grupos de rutas. Establecer la $namespacevariable por sí sola solo ayuda a generar URL para acciones.
Nuevamente, y no puedo enfatizar esto lo suficiente, la parte importante es configurar el espacio de nombres para los grupos de rutas, lo que simplemente hacen al hacer referencia a la variable miembro $namespacedirectamente en el ejemplo.
Actualizar:
Si ha instalado una copia nueva de Laravel 8 desde la versión 8.0.2 laravel/laravel, puede descomentar la protected $namespacevariable miembro en el RouteServiceProviderpara volver a la forma anterior, ya que los grupos de rutas están configurados para usar esta variable miembro para el espacio de nombres de los grupos.
La única razón para descomentar que agregaría el prefijo del espacio de nombres a los controladores asignados a las rutas es porque los grupos de rutas están configurados para usar esta variable como espacio de nombres:
...
->namespace($this->namespace)
...
Apicarpeta?