Iniciar un proyecto en Laravel puede ser una tarea abrumadora al principio, pero con un poco de enfoque y siguiendo algunos pasos, puedes gestionarlo eficientemente. Aquí te mostramos cómo completar un proyecto usando Laravel, desde configuraciones básicas hasta el manejo de datos y vistas.
¿Cómo configurar el controlador?
Comenzarás creando un controlador que se encargue de gestionar la lógica del proyecto. Al trabajar con Laravel, uno de los objetivos principales es centralizar las operaciones de datos y vistas en los controladores.
Importar los Modelos: Utiliza la ruta completa para importar el modelo de usuario a tu controlador:
useApp\User;
Obtener Usuarios: Para mostrar a los usuarios en la vista, podrás traer todos los registros de la tabla usuarios utilizando métodos de Laravel:
$users=User::all();
Retornar vistas: Carga la vista desde el controlador también pasando los datos obtenidos:
returnview('users.index',['users'=>$users]);
¿Cómo manejar el almacenamiento de datos?
Al gestionar la lógica de creación y eliminación de datos, Laravel facilita el proceso a través de métodos integrados.
Almacenar un Usuario: Configura el método store en el controlador para que maneje la lógica de creación de nuevos usuarios:
El diseño de la vista es una de las partes más importantes porque es lo que verá el usuario final. En este caso, Laravel permite usar Blade para combinar PHP y HTML de manera eficiente.
Configurar la Vista de Tabla:
Creación de Encabezados y Filas: Define los encabezados para las tablas y coloca el código para mostrar los usuarios:
Con estos pasos, ya tendrás una buena base para tu proyecto en Laravel, lo que te permitirá continuar aprendiendo sobre esta poderosa herramienta. Sigue practicando y mejorando tus habilidades con Laravel para desarrollar proyectos profesionales y efectivos. ¡Anímate y continúa aprendiendo!
Otro cambio de laravel 8x factory ya no funciona igual, ahora sería así:
User::factory()->count(12)->create();
Hola Jose, a mi el archivo User.php (App\User) no lo tengo. Estoy en Laravel 8
seria mejor que actualicen Xd todo cambio...
Lógica de controladores y vistas con datos de prueba
Cuando trabajamos con Laravel no interactuamos colocando código SQL, lo hacemos a través de un archivo ya preparado que representara a la tabla que queramos llamar.
⚠ Importante: En Laravel 8, las tablas de DB están dentro de la carpeta models y debemos poner esta línea de código para que el controlador lo vea.
useApp\Models\User;
A partir de Laravel 8, tenemos que manejar las rutas así:
// Tienes que especificar la ruta del controlador arribauseApp\Http\Controllers\UserController;Route::get('/',[UserController::class,'index']);Route::post('users',[UserController::class,'store'])->name('users.store');Route::delete('users/{user}',[UserController::class,'destroy'])->name('users.destroy');
php artisan tinker → Es una consola que tenemos de manera interna para manipular nuestros archivos Laravel.
Para crear datos automáticos dentro de la consola tinker, escribimos el siguiente comando, el número quiere decir la cantidad de datos que va a crear.
Si observan la ruta de tipo delete Laravel es capaz de identificar el usuario especifico que se busca pasandole el parametro {user}, este nombre del parametro en la ruta debe coincidir con el nombre del modelo, de esta manera obtendremos automaticamente el usuario a eliminar, (sin buscar en la BD) a este feature se le conoce como route model binding, este tambien tiene la opcion de configurarse de forma personalizada, asi se puede asignar otro nombre al parametro y aun asi seguira funcionando.
:)
En larvel 8.10 el archivo user.php esta dentro de la carpeta Models
si les genera error en las rutas solo deben modificar en UserController.php
use App\Models\User;
Gracias por el aporte
El @csrf se adiciono para evitar ataques del tipo CSRF, que es un tipo de exploit malicioso de un sitio web en el que comandos no autorizados son transmitidos por un usuario en el cual el sitio web confía. Esta vulnerabilidad es conocida también por otros nombres como XSRF, enlace hostil, ataque de un clic, secuestro de sesión, y ataque automático.
En laravel 8x cambió la manera de definir las rutas, les dejo como sería:
dentro de las llaves { user } es el nombre del params que estamos enviando, es importante recibirlo con el mismo, no me estaba eliminando por que lo recibia con otro nombre pensado que era una funcion o metodo
Gracias, me pasaba lo mismo.
¿Como se logra identificar este tipo de errores?, porque no reflejaba ningún error de sintaxis.
Pero tienes que agregar caracteres de escape, de lo contrario, eliminará el usuario sin pedir confirmación. Por ejemplo si tengo el siguiente nombre: Valentine O'Hara, la comilla simple o apostrofe despues de la O, cerrara el mensaje del confirm y quedará un error en el alert que no se interpretará correctamente.
al que tenga laravel 8 y le de error de undefinide factory al usar tinker este es el codigo que me funciono:
App\Models\User::factory()->count(12)->create();
Montoyita muchísimas gracias, tenia rato intentado corregir el error y no encontraba el problema y finalmente solo tenia que cambiar las llaves por corchetes, eres un genio!!!!! :)
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
/*
Route::get('/', function () {
return view('welcome');
});
*/
use App\Http\Controllers\UserController;
Route::get('/', [UserController::class,'index']);
Route::post('users', [UserController::class, 'store'])->name('users.store');
Route::delete('users/{user}', [UserController::class,'destroy'])->name('users.destroy');
**UserController.php**
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UserController extends Controller
{
public function index(){
$users = User::latest()->get();
return view('users.index', ['users'=>$users] );
}
public function store(Request $request){
User::create([
'name'=>$request->name,
'email'=>$request->email,
'password'=>$request->password,
]);
return back();
}
public function destroy(User $user){
$user->delete();
return back();
}
}
oye muchas gracias! tenia problemas con el index html
El token csrf es algo muy importante en los proyectos de Laravel, todos los formularios tienen que tener un token csrf, es una medida externa de seguridad:D
para la nueva versión de laravel el comando para crear los usuarios es User::factory()->count(15)->create();
Para que se muestre un mensaje si no hay usuarios en la base de datos:
@forelse($users as $user)<tr><td>{{$user->id}}</td><td>{{$user->name}}</td><td>{{$user->email}}</td><td><form action="{ route('users.destroy', $user) }" method="POST"> @method('DELETE') @csrf
<input type="submit" value="Delete"class="btn btn-sm btn-danger"></form></td></tr>@empty
<tr><td colspan="4"class="text-center">No hay usuarios registrados</td></tr>@endforelse
Es otra alternativa para el codigo de la función index
publicfunctionindex(){ $users =User::latest()->get();returnview('users.index',compact('users'));}```
La funcionalidad es la misma.
excelente
¿Cuál es la diferencia?
Las funciones comunes que se pueden utilizar en el controlador son: