Localización de rutas de recursos de Laravel: una guía para verbos personalizados
- Publicado el 25 octubre, 2024
- Palabras: 534
Al crear aplicaciones para una audiencia global, cada detalle importa, incluida la estructura de la URL. El enrutamiento de recursos de Laravel es una característica poderosa, pero utiliza verbos en inglés de manera predeterminada. ¿Qué sucede si está creando una aplicación en español, francés o cualquier otro idioma? Hoy, exploraremos cómo localizar verbos de enrutamiento de recursos en Laravel, para que su aplicación realmente hable el idioma de sus usuarios.

#Comprensión de la localización de rutas de recursos
De forma predeterminada, el método Route::resource de Laravel crea URIs usando verbos en inglés. Por ejemplo, una ruta 'create' podría verse como /users/create. Pero ¿qué pasa si quieres que sea /users/crear en español? Laravel ofrece una solución simple con el método Route::resourceVerbs.
#Implementación de verbos de recursos personalizados
Para localizar los verbos de ruta de recursos, deberá utilizar el método Route::resourceVerbs en AppProvidersAppServiceProvider. A continuación, le indicamos cómo hacerlo:
<?php
namespace AppProviders;
use IlluminateSupportFacadesRoute;
use IlluminateSupportServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*/
public function boot(): void
{
Route::resourceVerbs([
'create' => 'crear',
'edit' => 'editar',
]);
}
}
En este ejemplo, cambiamos el verbo «create» por «crear» y el verbo «edit» por «editar», que son sus equivalentes en español.
#Ejemplo práctico
Consideremos un escenario en el que estamos creando una aplicación de blog para una audiencia de habla española. Tenemos un PostController que administra las publicaciones del blog. Así es como podríamos configurarlo:
1.- Primero, localizamos los verbos de recursos en AppServiceProvider:
public function boot(): void
{
Route::resourceVerbs([
'create' => 'crear',
'edit' => 'editar',
]);
}
2.- Luego, definimos nuestra ruta de recursos en rutas/web.php:
Route::resource('posts', PostController::class);
3.- Ahora veamos cómo afecta esto a nuestras URL:
// Before localization:
// GET /posts/create
// GET /posts/{post}/edit
// After localization:
// GET /posts/crear
// GET /posts/{post}/editar
A continuación te mostramos cómo puedes usar estas rutas en tus plantillas Blade:
<a href="{{ route('posts.crear') }}">Crear Nuevo Post</a>
@foreach ($posts as $post)
<a href="{{ route('posts.editar', $post) }}">Editar</a>
@endforeach
Y en tu controlador:
class PostController extends Controller
{
public function crear()
{
return view('posts.crear');
}
public function editar(Post $post)
{
return view('posts.editar', compact('post'));
}
}
La salida de estas rutas se vería así:
// GET /posts/crear
{
"view": "posts.crear",
"data": {}
}
// GET /posts/1/editar
{
"view": "posts.editar",
"data": {
"post": {
"id": 1,
"title": "Mi Primer Post",
"content": "Contenido del post..."
}
}
}
Al localizar los verbos de ruta de recursos, crea una experiencia más coherente e intuitiva para sus usuarios, especialmente en aplicaciones que no están en inglés. Este pequeño cambio puede mejorar significativamente la experiencia del usuario y hacer que su aplicación parezca más nativa para su público objetivo.
Recuerde que, si bien en este ejemplo nos hemos centrado en el español, puede usar esta técnica para localizar sus rutas a cualquier idioma, lo que convierte a Laravel en un framework verdaderamente global.
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión