Los controladores en laravel

Hola developers, hoy en esta sección vamos a entender que son los controladores como podemos generar un controlador con los métodos básicos de visualización, creación, actualización y eliminación. De forma predeterminada, los controladores se almacenan en el directorio app/Http/Controllers del proyecto.

Autor: rogercode. Full stack developer

Los controladores nos permiten definir toda la lógica de nuestro proyecto mediante una clase principal que se genera en el archivo. Dentro de esta clase se definen todos los métodos a utilizar. Para cada entidad nosotros podemos crear un controlador y de esta manera el código será más entendible y limpio.

Ahora vamos a ver la estructura básica de un controlador

Al ejecutar el siguiente comando desde la terminal o cmd php artisan make:controller UserController --resource se crea en la ruta app/Http/Controllers/UserController.php el nuevo archivo con los metodos basicos para crear un crud.

            
              
      <?php

      namespace AppHttpControllers;

      use IlluminateHttpRequest;
      use App\Models\User; //Importamos el método User para utilizarlo en las cónsulas con ORM.

      class UserController extends Controller
      {
          /**
           * Mostrar una lista del recurso.
           *
           * @return IlluminateHttpResponse
           */
          public function index() //El método index nos retorna la vista principal. Adicionalmente le podemos pasar parámetros  
          {
            $datos = User::all();
            return view('user.index', ['parametro' => $datos]);
          }

          /**
           * mostrar el formulario para crear un nuevo recurso.
           *
           * @return IlluminateHttpResponse
           */
          public function create() //El método create nos retorna la vista del formulario para crear un usuario nuevo.
          {
            return view('user.create');
          }

          /**
           * Almacene un recurso recién creado en el almacenamiento.
           *
           * @param  IlluminateHttpRequest  $request
           * @return IlluminateHttpResponse
           */
          public function store(Request $request) //El método store nos permite guardar los datos de un formulario en la base de datos.
          {
            $user = User::create([
              'name' => $request->name,
              'email' => $request->email,
              'password' => $request->password,
            ]);
          }

          /**
           * Muestra el recurso especificado.
           *
           * @param  int  $id
           * @return IlluminateHttpResponse
           */
          public function show($id) //En el método show mostramos los datos de un registro en particular.
          {
            $user = User::where('user_id', $id)->first();
          }

          /**
           * Muestra el formulario para editar el recurso especificado.
           *
           * @param  int  $id
           * @return IlluminateHttpResponse
           */
          public function edit($id) //El método edit nos permite redireccionar al formulario para editar los datos y le pasamos como parámetro el registro.
          {
            $registro = User::find($id);
            return view('user.edit', ['parametro' => $registro]);
          }

          /**
           * Actualice el recurso especificado en el almacenamiento.
           *
           * @param  IlluminateHttpRequest  $request
           * @param  int  $id
           * @return IlluminateHttpResponse
           */
          public function update(Request $request, $id)  //El método update nos permite actualizar los datos del registro.
          {
            $user = User::find($id);
            $user->name = $request->name;
            $user->email = $request->email;
            $user->password = $request->password;
            $user->save();
          }

          /**
           * Eliminar el recurso especificado del almacenamiento.
           *
           * @param  int  $id
           * @return IlluminateHttpResponse
           */
          public function destroy($id) //El método destroy nos permite eliminar el registro de la base de datos.
          {
              User::destroy($id);
          }
      }

    
            
          

Agregar el controlador al enrutador

Para utilizar el controlador recien creado debemos agregarlo al enrutador que se encuentra en la ruta routes/web.php como se muestra en el ejemplo.

            
              
      <?php

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

      /*
      |--------------------------------------------------------------------------
      | Web Routes
      |--------------------------------------------------------------------------
      |
      | Aquí es donde puede registrar rutas web para su aplicación. Estas
      | las rutas son cargadas por el RouteServiceProvider dentro de un grupo que
      | contiene el grupo de middleware "web". ¡Ahora crea algo grandioso!
      |
      */

      Route::get('/', function () {
          return view('welcome');
      });

      Route::resource('user', UserController::class);//Aquí registramos el controlador y lo definimos de tipo recurso 

    
            
          

Ahora si ejecutamos en la terminal de nuestro proyecto el comando php artisan route:list nos mostrara una tabla con el metodo, url, nombre y la accion para cada controlador. De forma rápida podemos ver las rutas generadas para poder realizar un CRUD.

Method URI NameAction
GET|HEADuseruser.indexApp\Http\Controllers\UserController@index
POSTuseruser.storeApp\Http\Controllers\UserController@store
GET|HEADuser/createuser.createApp\Http\Controllers\UserController@create
GET|HEADuser/{user}user.showApp\Http\Controllers\UserController@show
PUT|PATCHuser/{user}user.updateApp\Http\Controllers\UserController@update
DELETEuser/{user}user.destroyApp\Http\Controllers\UserController@destroy
GET|HEADuser/{user}/edituser.editApp\Http\Controllers\UserController@edit