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 developerLos 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 | Name | Action |
---|---|---|---|
GET|HEAD | user | user.index | App\Http\Controllers\UserController@index |
POST | user | user.store | App\Http\Controllers\UserController@store |
GET|HEAD | user/create | user.create | App\Http\Controllers\UserController@create |
GET|HEAD | user/{user} | user.show | App\Http\Controllers\UserController@show |
PUT|PATCH | user/{user} | user.update | App\Http\Controllers\UserController@update |
DELETE | user/{user} | user.destroy | App\Http\Controllers\UserController@destroy |
GET|HEAD | user/{user}/edit | user.edit | App\Http\Controllers\UserController@edit |