RUTAS
Iniciamos instalando laravel y creando un poryecto con los siguientes comandos:
composer global require laravel/installer
laravel new blog
Laravel define una clase RouteServiceProvider, y la sitúa en routes. Se encargan de manejar el flujo de solicitudes y respuestas, desde y hacia el cliente .
app/Http/routes.php
php artisan route:list
Aqui podemos ver el nombre de nuestras rutas, de que tipo son, si es que reciben parametros y como se llaman, esta información es muy util para poder asociar los métodos del controlador con las rutas y también como es que las vamos a usar en el navegador.
===================================
Route::get('/esta-es-la-url', function () {
return 'Hola mundo';
});
===================================
Route::get('/listado-de-publicaciones/{categoria}', 'PostController@index'); =================================== class PostController extends Controller { public funtion index($categoria) { (...) } }
===================================
Rutas con parámetros
También con el sistema de rutas de Laravel puedes crear rutas más complejas que necesiten de parámetros dinámicos. Se pueden definir de la siguiente forma:
=====================================Route::get('/usuarios/detalles/{id}', function ($id) {
return "Detalles del usuario: {$id}";
});
====================================
Route::get('posts/{post_id}/comments/{comment_id}',
function ($postId, $commentId) { return "Este el comentario {$commentId} del post {$postId}"; });
======================================
En este caso Laravel se encarga de capturar el segmento de la ruta que es dinámico (lo identifica porque está encerrado entre llaves). Por tanto, en la URL pasamos la identificación del parámetro encerrado entre llaves y en la función anónima lo pasamos como argumento para que pueda ser accedido y usado dentro de dicha función.
Rutas con parámetros opcionales
Cuando el uso de un parámetro no es obligatorio, podemos usar el carácter ? después del nombre del parámetro para indicar que es opcional. Sin embargo, debe añadirse un valor por defecto al parámetro cuando lo colocamos en la función, por ejemplo:
if ($nickname) {
return "Bienvenido {$name}, tu apodo es {$nickname}";
} else {
return "Bienvenido {$name}, no tienes apodo";
}
});
Cómo invocar una vista
Route::get('/', function () {
return view('welcome');
});
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.
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.
En el siguiente código realizamos la invocación a una vista. Debes apreciar la función view() dentro del closure, a la que enviamos el nombre de la vista a mostrar.
Route::get('algo', function () { return view('algo'); });
Como has podido ver, view() es una función global, un helper global en Laravel, que se encarga de cargar una vista y devolver la salida producida por ella.
NAMESPACE
Si no definimos el namespace App\Http\Controller Laravel no sabrá encontrar este archivo y su método index.
Puede definir una ruta a esta acción del controlador así:
use App\Http\Controllers\UserController;
Route::get('user/{id}', [UserController::class, 'show']);
Ahora, cuando una solicitud coincide con el URI de ruta especificado, se ejecutará el método show en la clase UserController. Los parámetros de ruta también se pasarán al método.Le pasamos a la ruta un identificador que tendrá un valor por defecto y esa ruta tendrá un nombre
//dentro de la misma vista, asignamos valor por defecto
Route::get('/show/{id?}',function($id="122"){
return $id;
})->name('show'); Restricciones con Expresiones Regulares
Route::get('user/{name}', function ($name) {
//
})->where('name', '[A-Za-z]+'); //nomes poden passar lletres miníscules o Majúscules como mínim una volta
Route::get('user/{id}', function ($id) {
//
})->where('id', '[0-9]+'); //com a mínim, a soles podem passar com a mínim un nombre.
Route::get('user/{id}/{name}', function ($id, $name) {
//
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']); //le pasamos un array en caso de más de un elemento. uta en función del ROLE
// en el navegador puedes poner /admin/modificar-usuario o /admin/insertar-usuario
Route::group(['prefix'=>'admin'],function(){
Route::get('modificar-usuario',function(){
return "modifica usuario";
});
Route::get('insertar-usuario',function(){
return "insertar usuario";
});
});
Ruta que nos lleva directamente a una vista e incluso pasarle un argumento.
Route::view('/welcome', 'welcome'); //en el caso que sólo queramos enviar a una vista sin pasar por el controlador
Route::view('/welcome', 'welcome', ['name' => 'Taylor']); Especificamos que podemos usar GET y POST para una ruta
//verbos HTTP múltiples
Route::match(['get', 'post'], '/', function () {
//
});
//verbos HTTP cualquiera
Route::any('/', function () {
//
});
Creamos un controlador vacio, App->http->Controller->
php artisan make:controller MoviesController --plain
//en route
Route::get('/ejemplo', 'PeliculasController@index');
//en controlador
public function index(){
echo "hola Julio";
} 
Comentarios
Publicar un comentario