24. Route Resource

En este capítulo, aprenderás cómo utilizar el enrutamiento de recursos en Laravel 10. El enrutamiento de recursos es una forma conveniente de generar automáticamente las rutas necesarias para un controlador CRUD (Create, Read, Update, Delete) en tu aplicación. Te enseñaremos cómo utilizar el enrutamiento de recursos en Laravel 10 para crear rutas de forma rápida y eficiente.


4 comentarios

Inicia sesión para comentar

Comentarios:

  • Victor Arana Flores

    Victor Arana Flores hace 1 año Destacado

    En Laravel, el enrutamiento de recursos permite asignar las rutas típicas de creación, lectura, actualización y eliminación ("CRUD") a un controlador con una sola línea de código. Para ello, se puede utilizar el comando make:controller del Artisan junto con la opción --resource para crear rápidamente un controlador que maneje estas acciones.

    Por ejemplo, al ejecutar el siguiente comando se generará un controlador llamado PhotoController en app/Http/Controllers con métodos stub para cada una de las operaciones de recursos disponibles:

    php artisan make:controller PhotoController --resource


    Luego, se puede registrar una ruta de recursos en el archivo routes/web.php que apunte al controlador recién creado de la siguiente manera:

    use App\Http\Controllers\PhotoController;
    
    Route::resource('photos', PhotoController::class);


    Con esta única declaración de ruta se crean múltiples rutas para manejar una variedad de acciones en el recurso. Además, se puede registrar muchos controladores de recursos a la vez pasando una matriz al método resources() de la siguiente manera:

    Route::resources([
       'photos' => PhotoController::class,
       'posts' => PostController::class,
    ]);


    Por último, siempre es recomendable ejecutar el comando route:list del Artisan para obtener una descripción general rápida de las rutas de la aplicación.

  • Antonio Pablo Villegas

    Antonio Pablo Villegas hace 2 meses

    Hola Victor. En mi instalación, la carpeta App/Providers tiene un solo archivo y es AppServiceProvider.php, es decir que los otros cinco que aparecen en tui pantalla no existen. Especialmente el RouteServiceProvider.php. ¿Habré instalado mal Laravel o qué puede ser?, ¿puedo hacer el archivo manualmente? 

    • Victor Arana Flores hace 2 meses

      Hola Antonio, en Laravel 11 la forma de agregar una nueva ruta lo tienes que hacer desde el siguiente archivo:

      bootstrap/app.php

      Una vez ahi, tendrás lo siguiente

      return Application::configure(basePath: dirname(__DIR__))
          ->withRouting(
              web: __DIR__.'/../routes/web.php',
              api: __DIR__.'/../routes/api.php',
              commands: __DIR__.'/../routes/console.php',
              channels: __DIR__.'/../routes/channels.php',
              health: '/up',
          )

      Para agregar mas archivos de ruta debes usar la sentencia then, de esta manera

      return Application::configure(basePath: dirname(__DIR__))
          ->withRouting(
              web: __DIR__.'/../routes/web.php',
              api: __DIR__.'/../routes/api.php',
              commands: __DIR__.'/../routes/console.php',
              channels: __DIR__.'/../routes/channels.php',
              health: '/up',
              then: function () {
                  Route::middleware('web', 'auth')
                      ->prefix('instructor')
                      ->name('instructor.')
                      ->group(base_path('routes/instructor.php'));
      
                  Route::middleware('web', 'auth')
                      ->prefix('admin')
                      ->name('admin.')
                      ->group(base_path('routes/admin.php'));
      
                  Route::middleware('web')
                      ->group(base_path('routes/auth.php'));
              },
          )

      Como puedes ver, en este ejemplo he agregado dos archivos de rutas

    • Julian David Jaramillo hace 3 semanas

      verdad si pudistes crear el archivo a mi tambien me sale lo mismo 

  • Juan Montoya Vega

    Juan Montoya Vega hace 7 meses

    Hola, una consulta, cuando creo un controlador con el resource, solo puede tener esos 7 metodos? o podria tener otros mas?

    • Victor Arana Flores hace 7 meses

      Puede tener todos los metodos que quieras en el controlador. Pero Route:resource solo crea las 7 rutas necesarias para el crud, y espera que el controlador tenga los 7 metodos. 

      Si quieres crear mas rutas debes usar Route::get y definir los metodos que necesites.

  • Erik Serna Vite

    Erik Serna Vite hace 1 año

    ¿Cúal de las dos formas es la más recomendable?

    • Victor Arana Flores hace 1 año

      La más recomendable es la que se ajuste mejor a tus necesidades.