7. Links de Navegación para los Chatbots
Links de Navegación para los Chatbots
1. Configuración del Entorno de Desarrollo
1.1. Comando dev en Laravel
Recientemente, Laravel ha incorporado el comando dev que ejecuta múltiples procesos simultáneamente:
bash
composer run dev
Procesos que ejecuta:
✅ php artisan serve - Servidor de desarrollo
✅ php artisan queue listen - Procesador de colas
✅ php artisan bail - Logs en tiempo real
✅ npm run dev - Compilación de assets front-end
1.2. Instalación de Concurrently
Si el comando solicita instalar concurrently:
bash
npm install --save-dev concurrently
Función de Concurrently:
Permite ejecutar múltiples comandos en paralelo desde un solo script.
2. Rutas para los Chatbots
2.1. Crear Rutas Resource
Editamos el archivo routes/web.php para agregar las rutas de los chatbots:
php
<?php
use App\Http\Controllers\ChatbotController;
use Illuminate\Support\Facades\Route;
Route::middleware([
'auth:sanctum',
config('jetstream.auth_session'),
'verified',
])->group(function () {
Route::get('/dashboard', function () {
return Inertia::render('Dashboard');
})->name('dashboard');
// 👇 Agregar rutas resource para chatbots
Route::resource('chatbots', ChatbotController::class);
});
2.2. Importar el Controlador
Asegúrate de importar el controlador al inicio del archivo:
php
use App\Http\Controllers\ChatbotController;
2.3. Rutas Generadas
El método resource() crea automáticamente:
2.4. Verificación Temporal
Para probar, añadimos una respuesta temporal en el controlador:
php
// En app/Http/Controllers/ChatbotController.php
public function index()
{
return 'Index de Chatbots'; // Temporal
}
3. Agregar Links de Navegación
3.1. Estructura de Archivos de Jetstream
La navegación se encuentra en:
text
resources/js/Layouts/AppLayout.vue
3.2. Navegación de Escritorio
Ubicación: Buscar la sección Navigation Links comentada.
Agregar el link:
vue
<template>
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
<!-- Dashboard Link -->
<NavLink :href="route('dashboard')" :active="route().current('dashboard')">
Dashboard
</NavLink>
<!-- 👇 Agregar Link de Chatbots -->
<NavLink :href="route('chatbots.index')" :active="route().current('chatbots.*')">
Chatbots
</NavLink>
</div>
</template>
3.3. Navegación Móvil (Responsive)
Ubicación: Buscar la sección Responsive Navigation Menu.
Agregar el link:
vue
<template>
<!-- Responsive Navigation Menu -->
<div :class="{'block': showingNavigationDropdown, 'hidden': ! showingNavigationDropdown}" class="sm:hidden">
<div class="pt-2 pb-3 space-y-1">
<!-- Dashboard Link -->
<ResponsiveNavLink :href="route('dashboard')" :active="route().current('dashboard')">
Dashboard
</ResponsiveNavLink>
<!-- 👇 Agregar Link de Chatbots -->
<ResponsiveNavLink :href="route('chatbots.index')" :active="route().current('chatbots.*')">
Chatbots
</ResponsiveNavLink>
</div>
</div>
</template>
3.4. Componentes de Navegación
Los componentes utilizados son:
NavLink (para escritorio):
vue
<NavLink
:href="route('chatbots.index')"
:active="route().current('chatbots.*')"
>
Chatbots
</NavLink>
ResponsiveNavLink (para móvil):
vue
<ResponsiveNavLink
:href="route('chatbots.index')"
:active="route().current('chatbots.*')"
>
Chatbots
</ResponsiveNavLink>
4. Active State de la Navegación
4.1. Detección de Ruta Activa
javascript
// Active para todas las rutas de chatbots
:active="route().current('chatbots.*')"
// Active solo para el índice
:active="route().current('chatbots.index')"
// Active para rutas específicas
:active="route().current('chatbots.create') || route().current('chatbots.store')"
4.2. Ejemplos de Estado Activo
5. Estructura Completa de AppLayout.vue
5.1. Ejemplo de Implementación
vue
<template>
<div class="min-h-screen bg-gray-100">
<nav class="bg-white border-b border-gray-100">
<!-- Primary Navigation Menu -->
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">
<div class="flex">
<!-- Logo -->
<div class="shrink-0 flex items-center">
<Link :href="route('dashboard')">
<ApplicationLogo class="block h-9 w-auto" />
</Link>
</div>
<!-- Navigation Links - Desktop -->
<div class="hidden space-x-8 sm:-my-px sm:ml-10 sm:flex">
<NavLink
:href="route('dashboard')"
:active="route().current('dashboard')"
>
Dashboard
</NavLink>
<NavLink
:href="route('chatbots.index')"
:active="route().current('chatbots.*')"
>
Chatbots
</NavLink>
</div>
</div>
<!-- Settings Dropdown -->
<div class="hidden sm:flex sm:items-center sm:ml-6">
<!-- ... código del dropdown ... -->
</div>
<!-- Hamburger -->
<div class="-mr-2 flex items-center sm:hidden">
<button @click="showingNavigationDropdown = ! showingNavigationDropdown" class="...">
<!-- ... -->
</button>
</div>
</div>
</div>
<!-- Responsive Navigation Menu -->
<div :class="{'block': showingNavigationDropdown, 'hidden': ! showingNavigationDropdown}" class="sm:hidden">
<div class="pt-2 pb-3 space-y-1">
<ResponsiveNavLink
:href="route('dashboard')"
:active="route().current('dashboard')"
>
Dashboard
</ResponsiveNavLink>
<ResponsiveNavLink
:href="route('chatbots.index')"
:active="route().current('chatbots.*')"
>
Chatbots
</ResponsiveNavLink>
</div>
</div>
</nav>
<!-- Page Content -->
<main>
<slot />
</main>
</div>
</template>
6. Verificación de Funcionamiento
6.1. Pasos para Probar
Iniciar sesión con el usuario de prueba
Email: usuario@prueba.com
Contraseña: password
Acceder al Dashboard
Verificar que el link "Chatbots" aparece
Navegación de Escritorio
Pantalla ancha: Ver el link en la barra superior
Navegación Móvil
Pantalla pequeña: Abrir el menú hamburguesa
Verificar que el link aparece en el menú responsive
6.2. Prueba de Estado Activo
Hacer clic en "Chatbots"
Verificar que el link se resalta (estado activo)
La URL debe ser /chatbots
6.3. Prueba de Rutas
Si el controlador devuelve "Index de Chatbots" temporalmente:
php
// En ChatbotController.php
public function index()
{
return 'Index de Chatbots';
}
Deberías ver el texto en la página.
7. Consideraciones sobre Localización
7.1. Textos en Inglés
En este curso utilizamos textos en inglés para simplificar:
vue
<!-- Texto en inglés -->
<NavLink :href="route('chatbots.index')">
Chatbots
</NavLink>
7.2. Para Localización (Opcional)
Si necesitas traducciones, consulta:
📚 Curso "Laravel Inertia desde cero" en aprendible.com
Ejemplo con localización:
vue
<NavLink :href="route('chatbots.index')">
{{ $t('navigation.chatbots') }}
</NavLink>
8. Solución de Problemas Comunes
8.1. Error: Route not defined
Problema: route('chatbots.index') no funciona
Solución:
bash
php artisan route:clear
php artisan route:cache
8.2. El link no aparece
Verificar:
El usuario está autenticado
La ruta está definida correctamente
El archivo AppLayout.vue está actualizado
Los assets están compilados: npm run dev
8.3. El estado activo no funciona
Verificar el patrón de ruta:
vue
<!-- Correcto -->
:active="route().current('chatbots.*')"
<!-- Incorrecto (solo funciona para index) -->
:active="route().current('chatbots.index')"
9. Extensiones y Mejoras
9.1. Agregar Íconos
vue
<template>
<NavLink :href="route('chatbots.index')" :active="route().current('chatbots.*')">
<!-- Con ícono -->
<svg class="w-4 h-4 inline-block mr-2" ...>
Chatbots
</NavLink>
</template>
9.2. Contador de Chatbots
vue
<template>
<NavLink :href="route('chatbots.index')" :active="route().current('chatbots.*')">
Chatbots
<span class="ml-2 px-2 py-1 text-xs bg-gray-200 rounded-full">
{{ chatbotsCount }}
</span>
</NavLink>
</template>
<script setup>
import { computed } from 'vue';
import { usePage } from '@inertiajs/vue3';
const chatbotsCount = computed(() => {
return usePage().props.auth.user.chatbots_count ?? 0;
});
</script>
9.3. Submenú de Chatbots
vue
<template>
<div class="relative group">
<NavLink :href="route('chatbots.index')" :active="route().current('chatbots.*')">
Chatbots
<svg class="inline-block ml-1 w-4 h-4" ...>
</NavLink>
<div class="absolute left-0 mt-1 hidden group-hover:block bg-white shadow-lg rounded">
<Link :href="route('chatbots.create')" class="block px-4 py-2 hover:bg-gray-100">
Crear Chatbot
</Link>
<Link :href="route('chatbots.index')" class="block px-4 py-2 hover:bg-gray-100">
Ver Todos
</Link>
</div>
</div>
</template>
10. Resumen
10.1. Pasos Realizados
✅ Configurado el comando dev para desarrollo
✅ Definidas las rutas resource para chatbots
✅ Agregados links en navegación de escritorio
✅ Agregados links en navegación móvil
✅ Configurado estado activo de los links
10.2. Archivos Modificados
10.3. Resultado Final
✅ Link "Chatbots" visible en navegación de escritorio
✅ Link "Chatbots" visible en menú móvil
✅ Estado activo cuando se navega en rutas de chatbots
✅ Protección con autenticación
¡La navegación para los chatbots está lista para usar! 🚀
Comentarios
Publicar un comentario