En este post vamos a explicar cómo crear nuevas rutas en Laravel, qué son y cómo utilizar los controladores y las vistas.
Si entramos en el directorio donde creamos anteriormente nuestro nuevo proyecto Laravel veremos que hay muchas carpetas, cada carpeta tiene unos archivos que cada uno tiene su funcionalidad.
- app: es donde están todas las clases de lo que sería tu app. (controladores, modelos, etc.)
- bootstrap: contiene lo necesario para inciar el framework
- config: contiene los archivos de configuraciones
- database: contiene las migraciones y los seeds
- public: contiene el index.php que el archivo por donde entran todas las consultas
- resources: contiene las vistas y los assets sin compilar (JS, CSS, etc)
- routes: contiene las rutas de tu app
- storage: contiene cachés y logs
- tests: contiene los tests
- vendor: contiene las dependencias
Rutas
Las rutas se tienen que poner en el archivo routes/web.php si fuese una ruta web, si fuese una ruta para una API se debería poner en routes/api.php. Puedes añadir tantas rutas como quieras, pero las rutas que no estén en estos archivos al acceder y detectará que no existe Laravel te devolverá un error 404.
Vamos a crear nuestra primera ruta GET. Abrimos el archivo, añadimos el siguiente código y guardamos:
1 2 3 |
Route::get('/test', function () { return 'Esta es nuestra nueva ruta'; }); |
Abrimos el navegador y vamos a localhost:8000/test y veremos la frase que pongamos.
Laravel también nos permite utilizar cualquier método HTTP, simplemente cambiando el get por post, put, delete… Esto lo utilizaremos más adelante cuando trabajemos con formularios.
A veces necesitas pasar por la ruta el objeto que quieres mostrar, por ejemplo, cuando queremos mostrar el perfil de un usuario específico. Para hacer eso vamos a añadir otra ruta diferente en el mismo archivo.
1 2 3 |
Route::get('/usuario/{nombre}', function ($nombre) { return 'El nombre de usuario es '.$nombre; }); |
Accedemos desde el navegador a localhost:8000/usuario/juan y veremos la frase, si modificamos nombre veremos que también cambia la frase.
Vistas
Las vistas no es más que lo que tú ves cuando entras a una web. En Laravel las vistas se encuentran en resources/views. Para ver un ejemplo de como funcionan, en el código de ejemplo de las rutas se puede ver claramente como funciona.
1 2 3 |
Route::get('/', function () { return view('welcome'); }); |
Cuando entra en la raíz muestra la vista welcome que se encuentra en resources/views. Si abres el archivo verás que hay partes que tiene una sintaxi diferente que no es ni PHP ni HTML, esas partes de código es Blade, que es el motor de plantillas de Laravel, que nos facilita mucho el trabajo. Más adelante profundizaremos en Blade y explicaremos esa sintaxis.
Controladores
Los controladores son los archivos que se encargan de enviar la información a las vistas. Para crear un controlador lo podemos hacer desde la línea de comandos o hacerlo manualmente, yo creo que es más sencillo desde la línea de comando.
1 |
php artisan make:controller PostsController |
Una vez ejecutado, Laravel nos habrá creado el controlador en app/Http/Controllers , si lo abrimos veremos que tenemos todo preparado para añadir los métodos que harán las funcionalidades.
Vamos a crear un método de ejemplo, también tendremos que cambiar la forma de añadir las rutas, ahora lo vemos.
Añadimos el método show al controlador creado anteriormente:
1 2 3 4 5 6 7 8 9 10 11 |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PostsController extends Controller { public function show($id) { return view('post', ['post_id' => $id]); } } |
En el método estamos cogiendo el id pasado por la ruta y se lo pasamos a la vista para que lo muestre:
1 |
<p>El id del post es {{ $post_id }}</p> |
Por último, añadimos la ruta, la nueva forma quiere decir del controlador PostsController «ejecuta» el método show:
1 |
Route::get('/post/{id}', 'PostsController@show'); |
Y ya podemos acceder a localhost:8000/post/3 , por ejemplo, y veremos como todo esto funciona y la frase cambia dinámicamente dependiendo de lo que le pasemos por los parámetros de la ruta.
En la próxima entrada, trataremos controladores y vistas juntamente con modelos. Lo cual nos llevará configurar la conexión a la base de datos para poder utilizar los modelos.
Hola!, de antemano gracias por tus post me han ayudado mucho para aprender laravel, tengo una duda, creaste un nuevo archivo llamado «post.blade.php» o le cambiaste el nombre a welcome.blade.php? para agregar el «El id del post es {{ $post_id }}»
Hola,
Gracias por tu comentario! Me alegra que te haya ayudado!
Yo sí, creé una vista nueva.
Un saludo, espero volver a leernos por aquí.
Muchas gracias por la respuesta, sigo aprendiendo mucho por tus publicaciones, gracias de nuevo 😀
Excelente post hermano! Te felicito, me a facilitado mucho la comprension de Laravel en sus diferente archivos. Saludos
Hola Sixto,
Muchas gracias por tu comentario!
Un saludo!
Hola, me podrias dar un ejemplo para acceder a vistas que estan en subcarpetas dentro de views? Como deberia definir que hay una subcarpeta con mis vistas?
Hola, en esta página de la documentación hay un ejemplo (https://laravel.com/docs/master/views#creating-views). Se separa cada directorio con puntos.