Índice de contenido
- De Principiante a Senior: La Verdad Sobre Aprender CodeIgniter 4
- ¿Por qué CodeIgniter 4 es la mejor alternativa para PHP?
- Ecosistema: ¿Qué necesitas dominar primero?
- La Decisión en Frameworks PHP: ¿Qué aprender primero?
- El "Enfoque Pro": Cómo escribe código un Senior en CodeIgniter 4
- Tu Camino Hacia Senior en PHP y CodeIgniter 4
- Fases de Maestría Garantizadas:
- Recursos Gratuitos para Profundizar
- Lee y ve los Primeros Capítulos Totalmente Gratis
- Repositorios Base de CodeIgniter 4
- Prueba la Aplicación Demo
- ¿Por qué aprender CodeIgniter 4 hoy? (y qué lo hace tan poderoso)
- Un framework rápido, ligero y muy práctico
- Lo que me motivó a crear un curso completo
- Resumen de Módulos del Curso
- Habilidades Técnicas que Adquirirás
- Integración y componentes con Bootstrap 5
- Qué vas a aprender en este Curso y Libro de CodeIgniter 4
- Experiencia del Autor en el Mundo Real
- Preguntas Frecuentes
- 1. Introducción
- 2. Estructura del curso
- 3. Snippets VSC PHP
- 4. Sobre CodeIgniter 4
- 5. Realizar preguntas
- 1. Introducción
- 2. Software necesario e instalación de las herramientas: Windows
- 3. Crear una base de datos con DBngin
- 4. Instalar CodeIgniter 4 con composer
- 5. Software necesario e instalación de las herramientas: MacOS
- 6. Instalar CodeIgniter 4 con composer
- 7. Ejecutar CodeIgniter en el navegador
- 8. Demo: instalar CodeIgniter 4 manualmente
- 9. Línea de comandos
- 10. Organización de un proyecto
- 11. Habilitar el modo desarrollador
- 12. Configurar la base de datos
- 13. Introducción a las rutas: Parte 1
- 14. Introducción a las rutas: Parte 2
- 15. MVC
- 1. Introducción
- 2. Controlador y ruta
- 3. Controlador y vista: Primeros pasos
- 4. Controlador y vista: Pase de datos
- 5. Migraciones: Crear
- 6. Migraciones: Ejecutar
- 7. Migraciones: Reto, Categorías
- 8. Migraciones: Rollback
- 9. Modelo: Crear modelo de película
- 10. MVC y CRUD: Listado de películas
- 11. Listado de películas: Opciones CRUD en la vista
- 12. Demo: Navegación y enlaces en distintos entornos de C4
- 13. Show: Detalle
- 14. Create: Formulario
- 15. Create: Registrar en la base de datos
- 16. Update: Actualizar en la base de datos
- 17. Delete: Actualizar en la base de datos
- 18. Reutilizar vistas: Formulario de películas
- 19. Publicar en github
- 1. Introducción
- 2. Reto: Crear el CRUD para las categorías
- 3. Publicar en github
- 1. Introducción
- 2. Agrupar rutas
- 3. Redirecciones
- 4. Rutas con nombre
- 5. Limitar las rutas recurso o presenter
- 6. Demo: Navegación y enlaces en distintos entornos de C4
- 7. Demo: Rutas de tipo recurso y presenter
- 8. Organizar controladores en carpetas
- 9. Publicar en github
- 1. Introducción
- 2. Rutas comunes
- 3. Argumentos en las rutas
- 4. Comando para listado de rutas
- 5. Probar rutas: tipo POST
- 6. Probar rutas: tipo PUT
- 7. Rutas de tipo recurso y presenter
- 8. Rutas automáticas
- 9. Rutas de tipo recurso y presenter: Opciones, only, except
- 10. Controladores en carpetas
- 11. Más rutas
- 12. Las rutas usadas en el resto del curso
- 1. Introducción
- 2. Mensajes flash
- 3. Sesión
- 4. Publicar en github
- 1. Introducción
- 2. Definir Layout
- 3. Publicar en github
- 1. Introducción
- 2. Validaciones: Definir reglas
- 3. Validaciones: Establecerlas en formularios
- 4. Función de old()
- 5. Publicar en github
- 1. Introducción
- 2. Principales propiedades de los modelos
- 3. Operaciones comunes
- 4. Cambio de tipo devuelto: de array a objeto
- 5. Reto: Actualizar todas las consultas de array a objeto
- 6. Publicar en github
- 1. Introducción
- 2. Primeros pasos
- 3. Crear migración, controlador y modelo de usuario
- 4. Crear un usuario con contraseña en hash
- 5. Login
- 6. Registrar
- 7. Cerrar sesión
- 8. Filtro para usuario autenticado
- 9. Publicar en github
- 1. Introducción
- 2. Primeros pasos
- 3. CRUD películas
- 4. Probar CRUD con Postman
- 5. Errores individuales
- 6. Reto: CRUD con categorías
- 1. Introducción
- 2. ¿Qué es y cómo generar un seeder?
- 3. Generar seeders para el resto de las tablas
- 4. Seeder anidados
- 5. Publicar en github
- 1. Introducción
- 2. Relaciones uno a muchos: Migración
- 3. Relaciones uno a muchos: Aplicar cambios
- 4. Relaciones muchos a muchos: Primeros pasos
- 5. Relaciones muchos a muchos: Consultas
- 6. Relaciones anidadas: Migraciones y cambios
- 7. Relaciones anidadas: Asignar etiquetas a una película, vista base
- 8. Relaciones anidadas: Asignar etiquetas a una película, Evento JavaScript
- 9. Relaciones anidadas: Asignar etiquetas a una película
- 10. Relaciones anidadas: Bloquear botón sin etiqueta seleccionada
- 11. Relaciones anidadas: Listar etiquetas de una película
- 12. Relaciones anidadas: Eliminar etiquetas de una película
- 13. Reto, Relaciones anidadas: CRUD
- 14. Publicar en github
- 1. Introducción
- 2. Carga de archivos, parte 1
- 3. Carga de archivos, parte 2
- 4. Funciones importantes en la carga de los archivos
- 5. Acceder a la imagen mediante un controlador
- 6. CRUD imagenes
- 7. Eliminar imagen
- 8. Descargar imagen
- 9. Opcional: Eliminar imagen, variante
- 10. Publicar en github
- 1. Introducción
- 2. Librerías y funciones de ayuda
- 3. Implementar paginación
- 4. Obtener datos de archivos
- 5. Manejo de errores
- 6. Publicar en git
- 1. Introducción
- 2. Sobre Bootstrap 5
- 3. Container
- 4. Tabla
- 5. Carta
- 6. Navbar de navegación
- 7. Paginación
- 8. Botones
- 9. Mensajes de confirmación
- 10. Formularios
- 11. Login/registro
- 12. Errores Formulario
- 13. Publicar en github
- 1. Introducción
- 2. Listado paginado
- 3. Página de detalle
- 4. Filtros para el listado: HTML
- 5. Filtros para el listado: Filtrar, Buscar
- 6. Filtros para el listado: Filtrar, categoría y etiqueta
- 7. Filtros para el listado: Filtrar, agrupados de los Like
- 8. Filtros para el listado: Llenar formulario, categorías
- 9. Filtros para el listado: Llenar formulario, etiqueta por categoría
- 10. Segunda forma de filtrar, agrupado
- 11. Valores anteriores
- 12. Limpiar filtro
- 13. Página de detalle: Mostrar etiquetas e imágenes
- 14. Mostrar imagen, categoría y etiquetas en listado de películas
- 15. Películas por categoría
- 16. Películas por etiqueta
- 1. Introducción
- 2. Paginado
- 3. Paginado full con búsqueda y filtros
- 4. Películas por categoría
- 5. Películas por etiqueta
- 6. Detalle pelicula
- 7. Crear y actualizar película: Categoría
- 8. Crear y actualizar película: Etiqueta
- 9. CRUD etiquetas
- 10. Upload
- 11. Upload: Eliminar imágenes
- 12. Publicar en github
- 1. Instalar y configurar
- 2. Shield: Resumen
- 1. Introducción
- 2. Crear sistema de pantallas
- 3. Crear usuarios
- 4. Sistema de permisos a usuarios: Listado de usuarios
- 5. Sistema de permisos a usuarios: Detalle de usuario
- 6. Sistema de permisos a usuarios: Listado de permisos, pruebas
- 7. Sistema de permisos a usuarios: Listado de permisos y grupos
- 8. Clasificar permisos por grupos
- 9. Demo: Conocer asignación de grupos y permisos
- 10. Reto: Asignar/remover permisos con un click
- 11. Terminar implementación
- 12. Reto: Asignar/remover grupos con un click
- 13. Reto: Iterar matriz de grupos
- 14. Demo: Sincronizar
- 15. Proteger app: Definir permisos
- 16. Proteger app: Módulo de usuario
- 17. Proteger app: Redirecciones y limitaciones en la vista
- 18. Proteger app: Filtro para proteger módulo de usuarios
- 19. Proteger: controladores de ejemplo y redirecciones
- 1. Procesamiento de imágenes: fit
- 2. Procesamiento de imágenes: crop
- 3. Procesamiento de imágenes: quality
- 4. Procesamiento de imágenes: rotating
- 5. Procesamiento de imágenes: resizing
- 6. Procesamiento de imágenes: múltiples operaciones
- 7. Caché de las páginas
- 8. Caché de los datos
- 9. Introducción a las configuraciones personalizadas
- 10. Generar logs de sistema
- 11. Generar archivos de lenguaje
- 12. Detectar el idioma del cliente y traducir la app con los lenguajes soportados
- 13. Traducir un formulario
- 14. Objeto request
- 15. Transacciones
- 16. Metadata de la base de datos
- 1. Métodos put, patch y delete
- 2. Haciendo peticiones HTTP (CURL): get y delete
- 3. Haciendo peticiones HTTP (CURL): post y put
- 4. Detectando el agente (tipo de dispositivo y navegador)
- 5. Enviando emails
- 6. Encriptando textos
- 7. Trabajando con fechas
- 8. Trabajando con las URIs
- 9. Trabajando con archivos
- 1. Array Helper
- 2. File System
- 3. Number
- 4. Text helper
- 5. Url Helper
- 1. Introducción
- 2. Explorar inspiración para el proyecto
- 3. Crear controlador maestro
- 4. Crear controlador de ejemplo para el CRUD
- 5. Crear listado inicial: Generar Datos
- 6. Obtener las columnas de la tabla
- 7. Obtener la URL o URI desde el request
- 8. Crear listado inicial: Construir tabla
- 9. Crear listado inicial: Construir enlace del CRUD: Edición
- 10. Crear listado inicial: Construir cabecera
- 11. Cargar vistas para la cabecera y el footer
- 12. Definir un modelo para el CRUD mediante una función
- 13. Crear función para editar registros
- 14. Crear función para obtener el baseURL del proyecto + URI base
- 15. Crear vista para editar registros
- 16. Definir función para actualizar los registros
- 17. Definir tipos de campos según campos en la base de datos (controlador)
- 18. Crear esquema para definir tipos de campos para el formulario (vista)
- 19. Valor anterior en los formularios
- 20. Definir función y vista para la creación
- 21. Crear función para insertar un registro
- 22. Definir validaciones
- 23. Crear listados de selección para las relaciones foráneas en el controlador
- 24. Crear listados de selección para las relaciones foráneas en la vista
- 25. Crear listados de selección: Detalles finales
- 26. Crear listados de selección: selección por defecto en edición
- 27. Ocultar campo de id
- 28. Eliminar: Configurar modal al momento de dar clic en un enlace
- 29. Eliminar: Crear función en el controlador para eliminar
- 30. Eliminar: Definir formulario para eliminar registro
- 31. Activar la paginación en la tabla
- 32. Labels para el formulario y tabla/listado
- 33. Demo: Mostrar excepción con configuración incorrecta
- 1. Introducción
- 2. Crear Proyecto
- 3. Migración: Categoría y etiquetas
- 4. Migración: Producto
- 5. CRUD para las categorías
- 6. Extra: Mostrar errores del formulario
- 7. CRUD para las etiquetas
- 8. Agrupar rutas y cambiar el namespace
- 9. CRUD para los productos, enfoque inicial
- 10. CRUD para los productos, resto de los campos
- 11. CRUD para los productos, plugin WYSIWYG
- 12. CRUD para los productos, Terminar listado de productos
- 13. Generar un PDF: Instalar la herramienta y primeras pruebas
- 14. Aumentar las cantidades y devolver una respuesta json
- 15. CRUD para los productos, Generar migración para manejar el stock
- 16. CRUD para los productos, Generar modelo para el control de los productos
- 17. CRUD para los productos, Registrar log (ProductControl) en la función addStock
- 18. CRUD para los productos, Aumentar cantidades desde el listado
- 19. Extra: CRUD para los productos, Remover flechas input number
- 20. CRUD para los productos, Remover cantidades desde el listado
- 21. CRUD para los productos, Adaptar pase de id y a todos los productos
- 22. CRUD para los productos, Validar datos de entrada desde el controlador
- 23. CRUD para los productos, Verificar respuesta del servidor desde la vista
- 24. CRUD para los productos, replicar los pasos anteriores
- 25. CRUD para los productos, Convertir las funciones anteriores una petición POST
- 26. Generar migración y modelo para el cliente/usuario de la app
- 27. Actualizar Stock en el listado
- 28. Seeds, Generar usuarios de prueba
- 29. Registrar usuario en ProductsControl, generar migración
- 30. Reto: Modificar migración de tipos para los usuarios
- 31. Crear un componente con un listado de usuarios/customers
- 32. Aceptar el usuario desde el controlador
- 33. Reto: Realizar los pasos correspondientes para la salida de mercancia
- 34. Pasar tipo para indicar el recurso a consumir
- 35. Crear función json para mostrar los proveedores o clientes
- 36. Consumir la función anterior desde la vista para popular el select
- 37. Validar que el tipo de usuario sea válido
- 38. Crear una validación personalizada: Validar el usuario
- 39. Crear una validación personalizada: Pasar el tipo
- 40. Crear una validación personalizada: Verificar validaciones en el controlador
- 41. Verificar que existe stock al momento de realizar una venta
- 42. ¿Validar el producto desde el request?
- 43. Generar migración y modelo para ProductUserControl
- 44. Formulario para registrar compra (proveedores) y venta (clientes)
- 45. Mostrar errores por el diálogo
- 46. Reiniciar el diálogo
- 47. Mostrar el detalle (traza) del producto: entradas y salidas
- 48. Calcular el total
- 49. Filtros en la traza
- 50. Filtros en la traza: Recordar selección al recargar la página
- 51. Filtros en la traza: Usuario
- 52. Filtros en la traza: Cantidad, lado del cliente
- 53. Filtros en la traza: Cantidad, lado del servidor
- 54. Filtros en la traza: Cantidad, activar/desactivar y detalles finales
- 55. Filtros en la traza: Filtrar los usuarios por tipo
- 56. Filtros en la traza: Campo de búsqueda
- 57. Filtros en la traza: Campo de búsqueda, búsqueda por tokens
- 58. Filtros en la traza: Limpiar formulario
- 59. Demo: Generar PDF de la traza del producto
- 60. Categorías: Definir en el CRUD
- 61. Categorías: Filtro en el listado
- 62. Tags, relaciones muchos a muchos: Definir migración de productos y tags
- 63. Tags: Insertar tags en actualizar parte 1, actualizar y validaciones
- 64. Tags: Insertar tags en actualizar parte 2, selected en los options
- 65. Tags: Insertar tags en actualizar parte 2, valor anterior para los tags
- 66. Tags: Eliminar tags NO seleccionados
- 67. Tags: Filtro en el listado, groupBy y joins
- 68. Tags: Filtro en el listado, selected en los tags
- 69. Tags: Filtro en el listado, búsqueda individual de etiquetas (otra forma)
- 70. Tags: Filtro en el listado, checkbox en vez de select multiple
- 71. Publicar en git
- 1. Introducción
- 2. Sobre el proyecto
- 3. Instalar Bootstrap 5
- 4. Configurar el layout (container) y estructura HTML básica
- 5. Configurar botones
- 6. Configurar formularios
- 7. Configurar formularios
- 8. Configurar el header
- 9. Listado: Filtros
- 10. Traza: Características
- 11. Tablas
- 12. Paginación
- 13. Modal para formulario para registrar compra (proveedores) y venta (clientes)
- 14. Mostrar errores formulario
- 15. Publicar en git
- 1. Introducción
- 2. Crear aplicación en CodeIgniter y estructura base
- 3. Sitio de desarrolladores de PayPal
- 4. CURL Request
- 5. Botón de PayPal JS
- 6. Generar el token de acceso
- 7. Demo: Procesar la orden, CURL CodeIgniter
- 8. Procesar la orden, CURL PHP
- 9. Detalles finales
- 10. Publicar en git
- 1. Introducción
- 2. Primeros pasos
- 3. Crear proyecto en Vue mediante Node
- 4. Estructura del proyecto en Vue
- 5. Carpeta de los módulos de node
- 6. Un poco más sobre componentes en Vue
- 7. Axios/fetch Para realizar peticiones HTTP y consumir la Rest API
- 8. Nuestro primer fetch
- 9. CORS en CodeIgniter 4, la forma fácil
- 10. Pruebas con los fetch
- 11. Axios en reemplazo de los fetch
- 12. Nuestro primer axios
- 13. CORS en CodeIgniter 4, la forma fácil, definir URL de desarrollo
- 14. Componente de listado: Estructura base
- 15. Componente de listado: Ciclo de vida, Created
- 16. Componente de listado: v-for, Reactividad y async await
- 17. Demo: Reactividad de Vue y uso de funciones
- 18. Instalar y Configurar Oruga UI
- 19. Componente de Listado y Oruga UI
- 20. Componente de Listado y Oruga UI: Segunda forma
- 21. Opciones de la tabla
- 22. Paquete para los iconos
- 23. Vue Router
- 24. Vue Router: Configurar
- 25. Reto: SaveComponent.vue: Componente base y ruteo
- 26. SaveComponent.vue: Estructura base
- 27. SaveComponent.vue: Obtener categorías
- 28. SaveComponent.vue: v-model
- 29. SaveComponent.vue: Enviar petición al servidor
- 30. SaveComponent.vue: Manejo de errores
- 31. SaveComponent.vue: Editar: Obtener la película
- 32. SaveComponent.vue: Editar: Enviar data al servidor
- 33. Sobre las peticiones PUT en CodeIgniter 4
- 34. SaveComponent.vue: Eliminar
- 35. ListComponent.vue: Eliminar, recargar listado
- 36. ListComponent.vue: Diálogo de eliminar
- 37. Botones para editar y eliminar
- 38. Tailwind: Sobre
- 39. Tailwind: Instalar
- 40. Tailwind: Container
- 41. Tailwind: Márgenes
- 42. Tailwind: Textos
- 43. Tailwind: Diálogo de Eliminar
- 44. Tailwind: Mostrar operación a realizar en Formulario
- 45. Tailwind: Carta
- 46. Acomodar diseño en SaveComponent
- 47. Acomodar alineado SaveComponent: Parte 2
- 48. ListComponent.vue: Mostrar label del registro al eliminar
- 49. Tarea: CRUD categorías
- 50. Agrupar rutas
- 51. Navbar: Enlaces
- 52. Redireccionar en 404
- 53. Menú de hamburguesa
- 54. CORS CodeIgniter 4 la forma correcta
- 55. Publicar en github
- 1. Introducción
- 2. Apache: Exportar el proyecto vía FTP, archivos a emplear y primeros pasos
- 3. El archivo .env
- 4. Configurar CodeIgniter 4 en un dominio y remover el index.php
- 1. Requerimientos de CodeIgniter 4 y software a emplear
- 2. Instalar CodeIgniter 4 con composer
- 3. Demo: instalar CodeIgniter 4 manualmente
- 4. Ejecutar nuestro CodeIgniter desde el navegador
- 5. Demo: Generar URL limpia desde XAMPP o equivalente
- 6. Visual Studio Code como IDE para desarrollar en CodeIgniter
- 7. Requisitos para tomar el curso
- 8. Explicar estructura de un proyecto en CodeIgniter
- 9. Rutas, vistas y controlador base
- 10. Crear nuestro primer controlador y ruta asociada
- 11. Crear nuestra segunda ruta, método en el controlador y vista asociada
- 12. Crear nuestro segundo controlador y organizarlos en una carpeta aparte
- 13. Trabajar con múltiples vistas
- 14. Pase de datos entre controlador y vista
- 15. Rutas: pase de datos a funciones de los controladores
- 16. Rutas: Navegación entre páginas
- 17. Rutas: Rutas con nombre
- 18. Rutas: Bug en las rutas
- 19. Presentación de las migraciones para la planificación de nuestra base de datos
- 20. Crear la conexión a la base de datos
- 21. Presentación de la línea de comandos de CodeIgniter
- 22. Migraciones: Crear la tabla movies
- 23. Migraciones: Crear la tabla categories
- 24. Migraciones: Revertir cambios: rollback
- 25. Seeder: Generar datos de prueba en nuestra aplicación
- 26. Seeder: Truncar la tabla desde los seeder
- 27. Seeder: Generar muchos registros de prueba
- 28. Modelo: crear modelo para conectarnos a nuestra base de datos
- 29. Modelo: Crear modelo de categorías
- 30. El archivo .env en CodeIgniter 4
- 31. Actualizar CodeIgniter 4
- 32. ¿Qué hemos aprendido?
- 1. Introduccion
- 2. Crear la vista de listado de las películas
- 3. Más características del findAll()
- 4. Paginar registros
- 5. Rutas: Agrupar rutas
- 6. Rutas: Ruta de tipo recurso para nuestro controlador Movie
- 7. Crear nuestra función y estructura genérica para el controlador de películas
- 8. Definir el formulario para crear películas
- 9. Formularios: Recibir los datos
- 10. Formularios: Validar los datos
- 11. Formularios: Mostrar errores en la vista
- 12. Formularios: Guardar datos en la base de datos
- 13. Formularios: Campos permitidos para guardar o actualizar
- 14. Formularios: Redirección y mensajes por sesión
- 15. Eliminar registros
- 16. Actualizar: Crear funciones y vistas asociadas
- 17. Actualizar: valores por defecto y anterior en el formulario
- 18. Definir un formulario base para la creación y actualización
- 19. Crear partials para los mensajes de sesión y errores de formulario
- 20. Botón para crear
- 21. Cargar imágenes o archivos
- 22. Validaciones adicionales al momento de cargar la imagen
- 23. Crear tabla (migración) para guardar imágenes
- 24. Cargar imágenes y registrar en la base de datos
- 25. Redirección a actualizar en vista de creación
- 26. Personalizar formulario de creación/edición
- 27. Crear carpeta para guardar imágenes
- 28. Verificar id nulo
- 29. Modificar migración de movie para las categorías: rollback y refresh
- 30. Crear seeder para las categorías
- 31. Crear listado de categorías
- 32. Listado de categorías en actualizar película
- 33. Mostrar categoría en listado de películas
- 34. Validar datos de formulario mediante una clase aparte
- 35. Aprendido
- 1. Introduccion
- 2. Instalar la CDN de Bootstrap 4 o 5 y dependencias en CodeIgniter 4
- 3. Opcional: Emplear Bootstrap 5
- 4. Bootstrap: Configurar las tablas
- 5. Bootstrap: Configurar formulario
- 6. Bootstrap: Configurar el layout de la app
- 7. Bootstrap: Alert para los mensajes
- 8. Bootstrap: Links de paginación y creación de vista personalizada en CodeIgniter
- 9. Activar la clase de paginación
- 10. Bootstrap: header o cabecera de nuestra app
- 11. Personalizar los errores de formulario en CodeIgniter 4
- 12. CRUD imágenes movies: Listar
- 13. CRUD imágenes movies: Procesar y devolver desde el servidor
- 14. CRUD imágenes movies: get y validar errores al momento de proceso
- 15. CRUD imágenes movies: Definir la nueva ruta
- 16. CRUD imágenes movies: Columnas en Bootstrap
- 17. CRUD imágenes movies: Eliminar imágenes, botón personalizado
- 18. CRUD imágenes movies: Eliminar imágenes, dar funcionalidad al botón
- 19. Vista de detalle: Cartas en Bootstrap
- 20. Vista de detalle: Carrusel de imágenes
- 21. Instalar Font Awesome para nuestros íconos
- 22. Incorporar tooltip en el listado
- 23. Tarea: CRUD de categorías
- 24. Detalles: Centrar paginación, título, ancho extra descripción
- 25. ¿Qué hemos aprendido?
- 1. Introduccion
- 2. Crear ruta y controlador para el login
- 3. Crear vista para el login
- 4. Crear migración y modelo para el usuario
- 5. Mover controlador de Usuarios
- 6. CRUD de usuarios: proceso inicial
- 7. CRUD de usuarios: crear un hash de la contraseña con un helper
- 8. Verificar si el password es correcto
- 9. Procesar formulario de login
- 10. Presentación de la sesión
- 11. Cerrar sesión
- 12. Guardar datos de login en sesión
- 13. Terminar de procesar la petición para el login
- 14. Opción de cerrar sesión desde el header/nav
- 15. Introducción a los filtros: Proteger el módulo de dashboard
- 16. Parámetros obligatorios en los filtros
- 17. ¿Qué hemos aprendido?
- 1. Introduccion
- 2. Crear controlador base
- 3. Crear vistas base
- 4. Crear vista de listado de películas
- 5. Obtener una imagen por película y paginar los resultados
- 6. Mostrar la imagen en el listado
- 7. Crear la estructura para el detalle de la película
- 8. Limitar cantidad de texto en el listado de películas
- 9. Agregar columna para el precio a la película
- 10. Agregar un botón y ruta para comprar una película
- 11. Sobre la SDK de PayPal
- 12. Instalar la SDK de PayPal para hacer un cobro
- 13. Crear cuenta de desarrollo para PayPal
- 14. Adaptar la aplicación para hacer un pago genérico (generar link para el pago)
- 15. Configurar página para realizar el pago vía PayPal (buy)
- 16. Crear migración para registrar los pagos: Payment
- 17. Crear modelo Payment
- 18. Configurar el login obligatorio para comprar una película
- 19. Validar que el usuario esté autenticado al momento de comprar una película
- 20. Realizar la compra de una película mediante PayPal
- 21. Crear página de listado de las compras
- 22. Crear página de detalle de la compra
- 23. Redireccionar a la vista de detalle una vez realizada la compra (buy_success)
- 24. Agregar enlace para compras del usuario
- 25. Crear helper para formato de las fechas
- 26. Crear controlador para cargar sesión
- 27. Guardar el PaypalID y el tipo de pago
- 28. Crear buscador de películas: Formulario
- 29. Crear buscador de peliculas: Consulta
- 30. Crear buscador de peliculas: Filtrar por categorías
- 31. Crear buscador de películas: Colocar valores por defecto en la selección
- 32. Integrar Stripe en CodeIgniter 4
- 33. Crear una cuenta y la Api Key para la app en desarrollo
- 34. Crear la intentencion de pago (PaymentIntent) y generar la clave secreta
- 35. Conociendo los fetch para consumir la clave secreta para realizar un pago
- 36. Terminando de establecer el código para realizar un pago con Stripe
- 37. Resolviendo el problema con el Toolbar Debug de CodeIgniter 4
- 38. Demo: Realizando un pago y comprando el mismo
- 39. Procesar un pago vía Stripe bajo demanda: Separar vista de detalle y Stripe
- 40. Crear un modal en Bootstrap 4
- 41. Crear un modal para procesar el pago de Stripe: Petición fetch desde vista show
- 42. Mover JavaScript clave de Stripe a la función de detalle
- 43. Demo: petición vía jQuery Ajax.
- 44. Crear un archivo aparte para manejar el JavaScript de la tienda
- 45. Opcional: Colocar precios de la película
- 46. Realizando un pago para comprar una película
- 47. Refactorizar código JavaScript de Stripe
- 48. Definir estilo para el modal de Stripe
- 49. Validar datos de la compra y registrar en la base de datos
- 50. Crear fetch para enviar la petición con el identificador del pago
- 51. Devolver y consumir respuesta del procesamiento del pago
- 52. Colocar detalle del tipo de pago en las compras
- 53. Colocar detalle del tipo de pago en las compras
- 54. Archivo de configuración: Credenciales de PayPal y Stripe de manera global
- 55. Archivo de configuración: Emplear las configuraciones en controlador y vistas
- 56. Definir agrupado de rutas
- 57. Definir Foreign Key para los pagos
- 58. PayPal PHP: Explicación de lo que ya tenemos
- 59. PayPal PHP: Instalar el Rest Api SDK de PayPal en su versión 2
- 60. PayPal PHP: Generar una orden de prueba
- 61. PayPal PHP: Realizar una compra de prueba
- 62. PayPal PHP: Comprar una movie
- 63. PayPal PHP: Procesar respuesta de la compra
- 1. Introducción
- 2. Empezando con un controlador de tipo Rest
- 3. Instalar PostMan para realizar peticiones a la Rest Api
- 4. Crear un producto: Definir esquema básico
- 5. Crear un producto: Mostrar los errores de formulario
- 6. Crear un producto: Validar categoría válida
- 7. Normalizar respuesta de la RestApi
- 8. Mostrar un producto
- 9. Eliminar un producto
- 10. Editar un producto
- 11. Listado de categorías
- 12. Recurso rest paginado
- 13. Recurso rest con filtros y paginado
- 14. Respuesta personalizada para los métodos paginados
- 1. Actualizar versiones antiguas de CodeIgniter 4
- 2. Laravel Herd en CodeIgniter 4
- Algunas recomendaciones
Este es el curso MÁS completo que encontrarás de CodeIgniter 4, veremos de todo, desde aspectos básicos como las rutas, controladores, vistas, modelos, manejo de formularios, validaciones, entre otros hasta aspectos más completos como Rest Api con token de autenticación (y una app para consumir la misma desde Vue), manejo de base de datos relacionales, roles, permisos avanzados con Shield, paquetes imprescindibles y mucho más.
"Aprender CodeIgniter 4 fue una de las decisiones más importantes de mi carrera: descubrí que se puede tener la robustez de PHP sin el peso ni la lentitud de otros frameworks monolíticos."
El detalle del curso lo puedes ver en la parte inferior de esta publicación y lo mejor, es que es una inversión para varios años ya que, de manera gratuita, mantendré el curso y el libro por varios años a las nuevas versiones y dando mayor soporte por la Academia.
Lo que aprenderás en este Curso Maestro
- Por qué CodeIgniter 4 es el framework PHP más rápido y ligero para tus proyectos.
- Desarrollo Clave: El camino exacto para dominar la arquitectura MVC completa sin configuraciones complejas.
- Seguridad Extrema: Gestión de accesos, roles y permisos de nivel profesional usando CodeIgniter Shield.
- Rest APIs Pro: Construcción de APIs Rest completas consumibles en JSON o XML protegidas por tokens de seguridad.
- Persistencia de Datos: Domina la creación de base de datos relacionales, migraciones y seeders para poblar datos.
- Ecosistema Integrado: Uso de herramientas CLI (Spark), subida dinámica de archivos y despliegue profesional a producción.
De Principiante a Senior: La Verdad Sobre Aprender CodeIgniter 4
Aprender desarrollo backend hoy en día puede parecer abrumador. Tutoriales desactualizados, documentación técnica escasa o en otros idiomas, y la típica confusión: "¿Cómo manejo la seguridad sin complicarme? ¿Cómo estructuro mis controladores para que sean escalables? ¿De qué manera conecto mi base de datos de forma limpia?"
Si alguna vez has sentido que la curva de aprendizaje de frameworks modernos es un muro interminable, déjame decirte algo: estás en el lugar correcto. La mayoría de los desarrolladores fracasan no por falta de capacidad, sino por seguir rutas desorganizadas. Aquí te ofrezco el puente definitivo hacia tu siguiente nivel profesional con CodeIgniter 4.
¿Por qué CodeIgniter 4 es la mejor alternativa para PHP?
CodeIgniter 4 es uno de esos frameworks PHP que sorprende por su extrema ligereza y velocidad. A diferencia de otros frameworks más pesados que consumen una gran cantidad de recursos de servidor y requieren configuraciones complejas solo para iniciar, CodeIgniter mantiene un enfoque clásico de MVC dinámico y sumamente rápido.
Ecosistema: ¿Qué necesitas dominar primero?
| Tecnología | Curva de Aprendizaje | Propósito en el App |
|---|---|---|
| PHP 8.x | Baja-Media | El lenguaje de programación base que da soporte a todo el framework. |
| MVC en CodeIgniter | Muy Baja | Separación clara de responsabilidades: Modelos para datos, Vistas para UI, y Controladores para lógica. |
| Spark CLI & Migraciones | Baja | Automatizar la creación de tablas en la base de datos y comandos de desarrollo ágiles. |
| CodeIgniter Shield | Media | Sistema oficial de autenticación y autorización para la gestión de usuarios, roles y permisos. |
La Decisión en Frameworks PHP: ¿Qué aprender primero?
| Objetivo | Framework Ideal | ¿Por qué? |
|---|---|---|
| Proyectos rápidos y ultraligeros | CodeIgniter 4 | Rendimiento excepcional, huella mínima en disco y facilidad extrema de configuración inicial. |
| Aplicaciones monolíticas masivas | Laravel | Ecosistema muy grande con herramientas integradas, ideal pero a cambio de mayor peso de archivos. |
| Microservicios simples | Slim Framework | Minimalismo al extremo, ideal si solo requieres recibir y responder peticiones de APIs muy sencillas. |
El "Enfoque Pro": Cómo escribe código un Senior en CodeIgniter 4
Uno de los mayores problemas al aprender es arrastar malas costumbres. Observa cómo pasamos de un código básico, vulnerable e ineficiente, a uno limpio, estructurado y profesional usando las capacidades nativas del framework:
public function saveMovie() {
$db = \Config\Database::connect();
// Consulta directa sin validación ni protección CSRF
$db->query("INSERT INTO movies (title) VALUES ('".$_POST['title']."')");
return redirect()->to('/movies');
}public function saveMovie() {
$movieModel = new \App\Models\MovieModel();
if (!$this->validate($movieModel->getValidationRules())) {
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
$movieModel->save($this->request->getPost());
return redirect()->to('/movies')->with('message', '¡Guardado con éxito!');
}En el curso, te forzaré amistosamente a usar Modelos de Datos, validaciones automáticas y clases tipadas para que tu código sea de nivel empresarial.
Tu Camino Hacia Senior en PHP y CodeIgniter 4
He diseñado esta metodología para arrancar desde los conceptos más esenciales (Rutas, layouts, controladores) hasta alcanzar una maestría técnica construyendo APIs seguras, manejando autorizaciones por Shield y preparando tus despliegues.
Fases de Maestría Garantizadas:
- Fase 1: Dominio del Core. Ruteo avanzado, controladores dinámicos y layouts modulares de vistas reutilizables.
- Fase 2: Persistencia y Gestión. Integrar bases de datos, dominar migraciones y seeders relacionales, y la subida dinámica de imágenes.
- Fase 3: APIs REST & Integraciones. Creación de endpoints REST CRUD, seguridad basada en tokens y procesamiento de pagos con Paypal.
- Fase 4: Seguridad Shield y Despliegue. Autenticación e inyección de grupos y permisos avanzados con CodeIgniter Shield y subida limpia a entornos Apache en producción.
Recursos Gratuitos para Profundizar
A continuación te comparto los repositorios y accesos clave para que pongas en práctica el desarrollo en CodeIgniter 4 de inmediato:
Lee y ve los Primeros Capítulos Totalmente Gratis
Descubre mi estilo pedagógico e interactivo. Lee el libro y accede al curso comunitario gratis de CodeIgniter 4.
Libro y Curso Comunitario Gratis
Es importante mencionar que el curso cuenta con el formato en libro con el 100% del contenido, lo que significa que el curso es totalmente equivalente al libro.
Repositorios Base de CodeIgniter 4
También tengo recursos gratuitos para el Curso en el Blog y el curso comunitario en la web de la Academia. Te regalo estas líneas de código base listas para arrancar:
Prueba la Aplicación Demo
Interactúa con el proyecto final que construirás en el curso.
¿Por qué aprender CodeIgniter 4 hoy? (y qué lo hace tan poderoso)
CodeIgniter 4 es uno de esos frameworks PHP que sorprende por su simpleza. Es rápido, consume pocos recursos y mantiene un enfoque clásico de MVC sin sacrificar modernidad. Para proyectos pequeños y medianos es una delicia, y para APIs o paneles administrativos funciona de maravilla.
Un framework rápido, ligero y muy práctico
A diferencia de otros frameworks más pesados, CodeIgniter 4 te permite producir resultados desde las primeras horas. Esa facilidad inicial fue una de las razones que me llevó a trabajar con él… y también a notar lo mucho que hacía falta documentación clara y precisa, especialmente en español.
Lo que me motivó a crear un curso completo
Cuando comencé a enseñar CodeIgniter 4, me di cuenta de que la documentación era muy limitada. Por eso decidí crear un curso que cubriera todo el ecosistema, desde rutas y controladores hasta API REST con autenticación por tokens. Con el tiempo, lo he ido actualizando y lo seguiré actualizando durante años, totalmente gratis para quienes ya se inscribieron.
Resumen de Módulos del Curso
- Módulo 1: Configuración e Inicio: Entorno de desarrollo, instalación y primer CRUD MVC (Capítulos 1-3).
- Módulo 2: Ruteo, Vistas y Controladores: Rutas avanzadas, layouts de vistas, sesiones y controladores modulares (Capítulos 4-7).
- Módulo 3: Formularios, Validación y Modelos: Validación en servidor, propiedades de modelos y helpers (Capítulos 8-9).
- Módulo 4: Filtros y Autenticación: Interceptores de request y sistema de login de protección (Capítulo 10).
- Módulo 5: Rest APIs y Seeders: Creación de servicios REST JSON/XML y siembra de datos de prueba (Capítulos 11-12).
- Módulo 6: Relaciones y Carga de Archivos: Relaciones SQL uno a muchos y muchos a muchos, y subida dinámica de imágenes (Capítulos 13-14).
- Módulo 7: Frontend e Integración PayPal: Integración de Bootstrap 5, vistas de consulta final y plataforma PayPal (Capítulos 15-18, 20).
- Módulo 8: Seguridad Shield y Vue: Control de roles/permisos mediante Shield e integración SPA Vue (Capítulos 19, 21).
Habilidades Técnicas que Adquirirás
- Instalar CodeIgniter 4 con composer y manual
- Levantar el servicio de CodeIgniter 4
- Explicar la estructura de un proyecto en CodeIgniter
- Visual Studio Code como IDE para desarrollar en CodeIgniter
- Manejo de las rutas
- Controladores, vistas, modelos y rutas
- Trabajar con múltiples vistas (layout)
- Conexión a la base de datos
- Formularios para la gestión de datos y validación
- Sesión y sesión flash
- Carga de archivos y generación de PDF
- Mover imágenes y generación de carpetas o directorios dinámicos
- Redirecciones y mensajes por sesión
- Spark: Presentación de la línea de comandos de CodeIgniter
- Seeder: Generar datos de prueba en nuestra aplicación
- CRUD con los modelos
- El archivo .env en CodeIgniter 4
- Conocer las librerías y funciones de ayuda principales en CodeIgniter
- Crear funciones de Ayuda o helpers personalizadas.
- Creación de RestApis tipo CRUD
- Actualizar nuestro proyecto de CodeIgniter 4
- Módulo de usuario con login registro
- Uso de los filtros para interceptar peticiones
- Pasar CodeIgniter 4 a producción en un ambiente Apache
Integración y componentes con Bootstrap 5
- Manejo de menús de navegación (Nav)
- Cartas dinámicas para mostrar productos o elementos
- Alertas y notificaciones visuales
- Modals interactivos para procesos dinámicos
- Tablas dinámicas y estilizadas
- Manejo y optimización de imágenes
- Carruseles de imágenes interactivos
- Estilizado avanzado de botones y formularios
- Uso de Grid y contenedores fluidos para responsive
- Integración de Font Awesome para los iconos
Qué vas a aprender en este Curso y Libro de CodeIgniter 4
- Instalación con Composer o manual: Aprenderás a levantar tu ambiente de trabajo desde cero usando Composer o con instalación manual, según lo que prefieras. También te enseño a levantar el servidor integrado y a estructurar tu proyecto correctamente.
- Rutas, controladores, vistas y modelos (MVC real): Desde el inicio trabajamos con el core del framework: rutas simples/avanzadas, controladores estructurados y vistas reutilizables organizadas en layouts limpios. Aquí es donde muchos cursos fallan, pero en mi experiencia personal, dominar estos elementos te hace avanzar 10 veces más rápido en cualquier proyecto.
- Formularios, validaciones y sesiones: Manejo de formularios con reglas de validación seguras, mensajes personalizados y uso de session y session flash para notificaciones.
Este apartado lo trabajamos desde casos reales: crear, editar y eliminar registros de forma interactiva. - Conexión a base de datos y CRUDs prácticos: Configurar conexiones, dominar el Query Builder y construir un CRUD desde cero usando migraciones y seeders para automatizar datos de prueba en segundos, lo cual se vuelve indispensable en entornos reales.
- Archivos, PDFs, uploads e imagen dinámica: Subida de archivos, manejo de imágenes, generación de PDFs y creación de directorios dinámicos. Una de las partes que más me gusta explicar porque te da poder inmediato para construir paneles administrativos completos.
- Rest API + autenticación con tokens: Creamos una API REST CRUD completa y añadimos autenticación por tokens. Más adelante incluyo en el curso una pequeña app en Vue para consumir esa API de manera fluida.
- Módulo de usuarios con login, registro y Shield: Implementamos un sistema de usuarios usando sesiones y buenas prácticas. Además, enseñaré autorización con CodeIgniter Shield, una herramienta que fue un antes y un después para manejar roles y permisos con total elegancia.
Experiencia del Autor en el Mundo Real
“Llevo años enseñando CodeIgniter 4 y liderando proyectos reales en producción. En este curso y libro no enseño teoría abstracta, sino las trincheras del desarrollo real: la modularidad, la seguridad estricta, la persistencia óptima y el paso a producción sin fricciones. Es un material diseñado por y para desarrolladores pragmáticos que buscan resultados excepcionales en tiempo récord de la mano de un framework rápido e increíblemente ágil.”
Preguntas Frecuentes
- ¿Para quién es este curso?
- Personas que desean aprender a utilizar CodeIgniter 4 desde cero, desarrolladores con base básica en PHP y profesionales que quieran dominar una herramienta backend ágil y demandada en la industria web.
- ¿Cuáles son los requisitos previos del curso?
- Conocimientos básicos en HTML, CSS, JavaScript y PHP (haber creado al menos una sencilla aplicación empleando estas tecnologías en conjunto), y tener una PC con Windows, Linux o MacOS instalada.
- ¿El curso incluye soporte?
- Sí, cuentas con soporte completo a través de nuestra Academia para resolver dudas y problemas que se te presenten a lo largo del aprendizaje.