Curso y Libro CodeIgniter 4 desde cero + integración con Bootstrap 4 o 5 - 2025
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 -proximamente-), autorización mediante CodeIgniter Shield para los permisos, paquetes imprecindibles y mucho más, 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 por varios años a las nuevas versiones y dando mayor soporte por Academia.
Tambien tengo recursos gratuitos para el Curso en el Blog
Es importante mencionar, que el curso tambien tiene el formato en libro con el 100% del contenido del mismo, es decir, el curso es equivalente al libro.
Objetivo
La finalidad de este curso es dar los primeros pasos con CodeIgniter en su versión 4; para esto, tomaremos en cuenta dos cosas:
- No pretendemos que la persona logre conocer al 100% Codeigniter de cero a experto, ya que sería un objetivo demasiado grande para el alcance de lo aquí escrito, si no, conocer su ecosistema, qué nos ofrece y cómo funciona el mismo en base a varios ejemplos y/o aplicaciones pequeñas con alcances limitados.
- Se espera que el lector tenga conocimientos en JavaScript, HTML y CSS ya que son necesarios para poder desarrollar en cualquier framework PHP, o web del lado del servidor que quieras aprender; en mi sitio web desarrollolibre.net cuento con múltiples recursos que te pueden interesar para dar los primeros pasos con varias tecnologías de manera gratuita; al igual que en mi canal de YouTube, tienes mucho material gratuito, único y de calidad.
Para quien es este curso
Este curso es para cualquiera que quiera construir sus primeras aplicaciones en CodeIgniter 4, este escrito ofrece una introducción paso a paso con el framework conociendo los aspectos más relevantes del mismo y es enfocado sobre todo a la práctica; se da por hecho de que el lector tiene conocimientos y ha desarrollado en PHP y tecnologías compañeras del lenguaje, como JavaScript, HTML y CSS, ya que, recuerda que para emplear cualquier framework, tienes que tener las bases que sustentan al mismo, es decir, su lenguaje de programación.
El libro está dirigido a aquellas personas que quieran aprender algo nuevo, conocer sobre un framework que tiene muy poca documentación (sobre todo en español), que quiera mejorar una habilidad en el desarrollo web, que quiera crecer como desarrollador y que quiera seguir escalando su camino con otros frameworks superiores a este; con que cumplas al menos alguna de las consideraciones anteriores, este libro es para ti.
Resumen del curso
A nivel técnico aprenderás ha trabajar con las siguientes características en CodeIgniter de manera fluida:
- Instalar CodeIgniter 4 con composer y manual
- Levantar el servicio de CodeIgniter 4
- Explicar 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ámico
- 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
Integrar con Bootstrap 5:
- Nav
- Cartas
- Alertas
- Modals
- Tablas
- Imágenes
- Carrusel
- Botones
- Grid y contaniner
- Font Awesome para los íconos
Por aquí tienes el listado completo de clases que vamos a cubrir en el libro y curso:
Introducción al curso
-
1 Introducción
-
2 Estructura del curso
Este es un curso bastante grande con muchos módulos de lo cual vamos de lo más básico a aspectos más avanzados, por lo tanto, el flujo u orden del curso es secuencial; te aconsejo que sigas el curso tal cual esta,...
-
3 Snippets VSC PHP
Snippets para VSC "php": { "prefix": "php", "body": [ "<?php $1 ?>" ], "description": "php tag" }, "php7": { "prefix": "php7", "body": [ "<?= $1 ?>" ], "description": "php7 tag" }
-
4 Sobre CodeIgniter 4
Vamos a hablar un poco sobre las características de CodeIgniter 4 en comparación con otros framework PHP de mayor nivel como Laravel.
-
5 Realizar preguntas
Primeros pasos
-
1 Introducción
-
2 Software necesario e instalación de las herramientas: Windows
Veremos el ambiente recomendado para trabajar con CodeIgniter en Windows.
-
3 Instalar CodeIgniter 4 con composer
Vamos a instalar CodeIgniter 4 mediante composer.
-
4 Software necesario e instalación de las herramientas: MacOS
-
5 Instalar CodeIgniter 4 con composer
Vamos a instalar CodeIgniter 4 mediante composer.
-
6 Ejecutar CodeIgniter en el navegador
Vamos a ejecutar CodeIgniter desde el navegador y de esta manera ver el producto de nuestro trabajo hasta este punto.
-
7 Demo: instalar CodeIgniter 4 manualmente
Vamos a instalar CodeIgniter 4 de manera manual.
-
8 Línea de comandos
Vamos a explicar de manera general la línea de comandos.
-
9 Organización de un proyecto
Vamos a explicar de manera general el propósito de cada carpeta y archivo principal del proyecto.
-
10 Habilitar el modo desarrollador
Habilitar el modo desarrollador
-
11 Configurar la base de datos
Vamos a configurar la base de datos en MySQL.
-
12 Introducción a las rutas: Parte 1
Veremos cómo trabajar con las rutas.
-
13 Introducción a las rutas: Parte 2
Veremos cómo trabajar con las rutas.
-
14 MVC
Conoceremos como está formado el MVC de CodeIgniter.
Crear el primer CRUD: Películas
-
1 Introducción
-
2 Controlador y ruta
Vamos a crear un controlador y su ruta asociada.
-
3 Controlador y vista: Primeros pasos
Vamos a crear un controlador y la vista asociada.
-
4 Controlador y vista: Pase de datos
Vamos a aprender a realizar el paso de datos entre controlador y vista.
-
5 Migraciones: Crear
Vamos a crear la primera migración para crear la tabla en la base de datos.
-
6 Migraciones: Ejecutar
Vamos a ejecutar la migración para replicar la clase de PHP (migración) a la base de datos como una tabla.
-
7 Migraciones: Reto, Categorías
Vas a crear la migración para las categorías.
-
8 Migraciones: Rollback
Vamos a aprender a revertir las migraciones.
-
9 Modelo: Crear modelo de película
Vamos a crear el modelo para las películas.
-
10 MVC y CRUD: Listado de películas
Vamos a crear un listado de películas empleando todas las capas del MVC y crear una de las capas del MVC.
-
11 Listado de películas: Opciones CRUD en la vista
Vamos a crear las opciones CRUD desde el listado.
-
12 Demo: Navegación y enlaces en distintos entornos de C4
Vamos a probar cómo se accede a las rutas si accedemos desde localhost, url con el virtual host o servidor de spark.
-
13 Show: Detalle
Vamos a crear el proceso para el detalle de una película.
-
14 Create: Formulario
Vamos a crear el proceso para crear una película.
-
15 Create: Registrar en la base de datos
Vamos a guardar los datos en la base de datos.
-
16 Update: Actualizar en la base de datos
Vamos a realizar el proceso de realizar de editar.
-
17 Delete: Actualizar en la base de datos
Vamos a realizar el proceso de eliminación.
-
18 Reutilizar vistas: Formulario de películas
Vamos a combinar dos vistas en una.
-
19 Publicar en github
Reto: CRUD Categorías
-
1 Introducción
-
2 Reto: Crear el CRUD para las categorías
Vas a crear el CRUD para las categorías.
-
3 Publicar en github
Rutas y redirecciones
-
1 Introducción
-
2 Agrupar rutas
Vamos a aprender a agrupar rutas.Vamos a aprender a agrupar rutas.
-
3 Redirecciones
Vamos a aprender a realizar redirecciones.
-
4 Rutas con nombre
Vamos a aprender a trabajar con rutas con nombre.
-
5 Limitar las rutas recurso o presenter
Vamos a aprender a limitar funciones de las rutas de tipo presenter o recurso.
-
6 Demo: Navegación y enlaces en distintos entornos de C4
Vamos a probar cómo se accede a las rutas si accedemos desde localhost, url con el virtual host o servidor de spark.
-
7 Demo: Rutas de tipo recurso y presenter
Vamos a realizar una demostración de las rutas de tipo recurso vs las de tipo presenter.
-
8 Organizar controladores en carpetas
Vamos a organizar los controladores en carpetas.
-
9 Publicar en github
Introducción a las rutas
-
1 Introducción
-
2 Rutas comunes
Exploramos las rutas más comunes y su funcionamiento.
-
3 Argumentos en las rutas
Conoceremos cómo usar argumentos en las rutas y sus tipos.
-
4 Comando para listado de rutas
Conoceremos el comando para mostrar las rutas.
-
5 Probar rutas: tipo POST
Vamos a probar una ruta de tipo POST, para crear recursos.
-
6 Probar rutas: tipo PUT
Vamos a probar una ruta de tipo PUT, para crear recursos.
-
7 Rutas de tipo recurso y presenter
Vamos a conocer como generar rutas de tipo CRUD y para qué sirven cada tipo de ruta.
-
8 Rutas automáticas
Vamos a generar rutas de manera automática.
-
9 Rutas de tipo recurso y presenter: Opciones, only, except
Vamos a conocer un par de opciones para eliminar las rutas generadas para las rutas de tipo CRUD.
-
10 Controladores en carpetas
Veremos cómo podemos colocar nuestros controladores en carpetas y definir sus rutas.
-
11 Más rutas
Hablaremos sobre otras opciones de las rutas.
-
12 Las rutas usadas en el resto del curso
Sesión y mensaje flash
-
1 Introducción
-
2 Mensajes flash
Vamos a aprender a crear y leer mensajes de sesión que solamente dura una petición/request.
-
3 Sesión
Vamos a aprender a crear y leer mensajes en la sesión.
-
4 Publicar en github
Vistas y layouts
-
1 Introducción
-
2 Definir Layout
Vamos a crear un layout para el módulo de dashboard.
-
3 Publicar en github
Formularios y validaciones
-
1 Introducción
-
2 Validaciones: Definir reglas
Vamos a aprender a realizar validaciones sobre formularios.
-
3 Validaciones: Establecerlas en formularios
Vamos a aprender a realizar validaciones sobre formularios.
-
4 Función de old()
Vamos a conocer una función para obtener el valor anterior de un campo de formulario.
-
5 Publicar en github
Modelos
-
1 Introducción
-
2 Principales propiedades de los modelos
Vamos a conocer algunas propiedades claves en el uso de los modelos.
-
3 Operaciones comunes
Vamos a conocer de manera teórica algunas funciones importantes en el uso de los modelos.
-
4 Cambio de tipo devuelto: de array a objeto
Vamos a conocer cómo devolver objetos en vez de array en las consultas.
-
5 Reto: Actualizar todas las consultas de array a objeto
Vas a actualizar todas las consultas de array a objeto.
-
6 Publicar en github
Filtros
-
1 Introducción
-
2 Primeros pasos
Vamos a conocer el uso de los filtros como intermediarios de los controladores.
-
3 Crear migración, controlador y modelo de usuario
Vamos a crear el esquema para crear un módulo de autenticación personalizado en la aplicación.
-
4 Crear un usuario con contraseña en hash
Vamos a crear el proceso para manejar la contraseña.
-
5 Login
Vamos a crear un sistema de login.
-
6 Registrar
Vamos a crear la página para registrar usuarios.
-
7 Cerrar sesión
Vamos a implementar la función de cerrar la sesión.
-
8 Filtro para usuario autenticado
Vamos a crear el filtro para proteger nuestro módulo de gestión.
-
9 Publicar en github
Rest Api CRUD
-
1 Introducción
-
2 Primeros pasos
Vamos a presentar como crear rest apis en CodeIgniter.
-
3 CRUD películas
Vamos a crear una rest api tipo CRUD para las películas.
-
4 Probar CRUD con Postman
Vamos a probar la Rest Api anterior.
-
5 Errores individuales
Vamos a aprender a procesar los errores de manera individual.
-
6 Reto: CRUD con categorías
Vamos a crear una rest api tipo CRUD para las categorías.
Seeders
-
1 Introducción
-
2 ¿Qué es y cómo generar un seeder?
Conoceremos para que se pueden utilizar los seeders y como generar uno.
-
3 Generar seeders para el resto de las tablas
Vamos a generar los datos de prueba para el resto de las migraciones.
-
4 Seeder anidados
Veremos cómo llamar múltiples seeders con un solo comando.
-
5 Publicar en github
Relaciones
-
1 Introducción
-
2 Relaciones uno a muchos: Migración
Crearemos la relación de categoria_id.
-
3 Relaciones uno a muchos: Aplicar cambios
Veremos las relaciones de uno a muchos.
-
4 Relaciones muchos a muchos: Primeros pasos
Veremos las relaciones de muchos a muchos.
-
5 Relaciones muchos a muchos: Consultas
Una vez creada las estructuras de la relación, realizaremos las consultas.
-
6 Relaciones anidadas: Migraciones y cambios
Conoceremos cómo trabajar con relaciones anidadas.
-
7 Relaciones anidadas: Asignar etiquetas a una película, vista base
Vamos a crear la vista base para asignar las etiquetas a una película.
-
8 Relaciones anidadas: Asignar etiquetas a una película, Evento JavaScript
Vamos a enviar una petición al navegador cada vez que el usuario cambie la categoría por JavaScript.
-
9 Relaciones anidadas: Asignar etiquetas a una película
Vamos a terminar el proceso para asignar las etiquetas a una película.
-
10 Relaciones anidadas: Bloquear botón sin etiqueta seleccionada
Vamos a bloquear el botón de submit si no existe una categoría seleccionada.
-
11 Relaciones anidadas: Listar etiquetas de una película
Vamos a mostrar el listado de etiquetas en la vista de show de la película.
-
12 Relaciones anidadas: Eliminar etiquetas de una película
Vamos a crear el proceso para eliminar etiquetas asignadas.
-
13 Reto, Relaciones anidadas: CRUD
Vamos a crear un sencillo módulo de gestión.
-
14 Publicar en github
Carga de archivos
-
1 Introducción
-
2 Carga de archivos, parte 1
Vamos a crear la estructura para cargar archivos.
-
3 Carga de archivos, parte 2
Vamos a crear el resto de las relaciones para el proceso de upload.
-
4 Funciones importantes en la carga de los archivos
Vamos a conocer funciones claves en la carta de los archivos.
-
5 Acceder a la imagen mediante un controlador
Vamos a conocer otro mecanismo con el cual, podemos referenciar una imagen cargada en la carpeta writable.
-
6 CRUD imagenes
CRUD imagenes
-
7 Eliminar imagen
Vamos a eliminar una imagen.
-
8 Descargar imagen
Vamos a descargar una imagen.
-
9 Opcional: Eliminar imagen, variante
Vamos a verificar si no existen más películas asignadas a la misma imagen en la tabla pivote antes de eliminar la imagen y el registro de la imagen.
-
10 Publicar en github
Librerías y funciones en CodeIgniter
-
1 Introducción
-
2 Librerías y funciones de ayuda
Vamos a conocer de manera básica las librerías y funciones de ayuda que incorpora C4.
-
3 Implementar paginación
Vamos a implementar la paginación para nuestros listados.
-
4 Obtener datos de archivos
Vamos a crear emplear una función de ayuda para obtener datos de un archivo.
-
5 Manejo de errores
Vamos a conocer como usar las excepciones.
-
6 Publicar en git
Bootstrap 5
-
1 Introducción
-
2 Sobre Bootstrap 5
Vamos a hablar de B5 y otras soluciones.
-
3 Container
Vamos a definir un container para la aplicación.
-
4 Tabla
Vamos a usar el CSS de la tabla.
-
5 Carta
Vamos a adaptar el componente de carta como contenedor.
-
6 Navbar de navegación
Vamos a implementar el menú de navegación en su header.
-
7 Paginación
Vamos a adaptar el componente de paginación.
-
8 Botones
Vamos a adaptar el componente de los botones.
-
9 Mensajes de confirmación
Vamos a establecer los mensajes de confirmación mediante el componente de alert.
-
10 Formularios
Adaptamos el estilo para los formularios.
-
11 Login/registro
Vamos a crear el CSS para el login.
-
12 Errores Formulario
Definiremos el estilo para los errores de formulario.
-
13 Publicar en github
Módulo web
-
1 Introducción
-
2 Listado paginado
Vamos a crear un listado paginado.
-
3 Página de detalle
La página de detalle de la película.
-
4 Filtros para el listado: HTML
Filtros para la página de listado
-
5 Filtros para el listado: Filtrar, Buscar
Vamos a filtrar los datos empleando los LIKE buscar por el término de búsqueda.
-
6 Filtros para el listado: Filtrar, categoría y etiqueta
Vamos a filtrar por categorías y etiquetas.
-
7 Filtros para el listado: Filtrar, agrupados de los Like
Vamos a agrupar los LIKE.
-
8 Filtros para el listado: Llenar formulario, categorías
Vamos a llenar el listado de categorías y etiquetas.
-
9 Filtros para el listado: Llenar formulario, etiqueta por categoría
Vamos a llenar las etiquetas dada la categoría.
-
10 Segunda forma de filtrar, agrupado
Veremos una segunda implementación a los filtros.
-
11 Valores anteriores
Mostraremos los valores anteriores.
-
12 Limpiar filtro
Crearemos una función para limpiar los filtros.
-
13 Página de detalle: Mostrar etiquetas e imágenes
Vamos a mostrar el resto de las relaciones de la película.
-
14 Mostrar imagen, categoría y etiquetas en listado de películas
Vamos a mostrar una imagen en el listado de películas.
-
15 Películas por categoría
Vamos a obtener un listado de películas por categoría.
-
16 Películas por etiqueta
Vamos a obtener un listado de películas por etiqueta.
Rest api relaciones métodos personalizados
-
1 Introducción
-
2 Paginado
Crearemos un listado paginado en la rest api.
-
3 Paginado full con búsqueda y filtros
Crearemos un listado paginado con filtros.
-
4 Películas por categoría
Obtendremos un listado paginado en base a las categorías.
-
5 Películas por etiqueta
Obtendremos un listado paginado en base a las etiquetas.
-
6 Detalle pelicula
Modificaremos el detalle de las películas con los nuevos campos.
-
7 Crear y actualizar película: Categoría
Vamos a modificar los procesos existentes para colocar la categoría.
-
8 Crear y actualizar película: Etiqueta
Vamos a crear el proceso para administrar etiquetas desde una película.
-
9 CRUD etiquetas
Crearemos un CRUD para las etiquetas.
-
10 Upload
Crearemos un método para realizar el upload de imágenes.
-
11 Upload: Eliminar imágenes
Crearemos un método para eliminar las imágenes de una película.
-
12 Publicar en github
Shield
-
1 Instalar y configurar
Vamos a conocer shield, crear un proyecto y configurarlo.
-
2 Shield: Resumen
Vamos a conocer las páginas principales creadas por shield.
Shield: Grupos y Permisos
-
1 Introducción
-
2 Crear sistema de pantallas
Vamos a crear un esquema básico para poder hacer las simulaciones de grupos y permisos de Shield.
-
3 Crear usuarios
Crearemos algunos usuarios de ejemplo.
-
4 Sistema de permisos a usuarios: Listado de usuarios
Crearemos un controlador para manejar los usuarios, permisos y grupos.
-
5 Sistema de permisos a usuarios: Detalle de usuario
Crearemos un listado de grupos y permisos.
-
6 Sistema de permisos a usuarios: Listado de permisos, pruebas
Vamos a realizar algunas pruebas, conocer los modelos de los grupos y permisos y leer el archivo de configuración de AuthGroup.
-
7 Sistema de permisos a usuarios: Listado de permisos y grupos
Vamos a crear un listado de grupos y permisos.
-
8 Clasificar permisos por grupos
Vamos a clasificar los permisos de los usuarios por grupo.
-
9 Demo: Conocer asignación de grupos y permisos
Vamos a ver una demostración sobre el uso de los grupos y permisos.
-
10 Reto: Asignar/remover permisos con un click
Vas a crear la asignación y eliminación de un permiso al dar click en los botones.
-
11 Terminar implementación
Daremos los toques finales sobre la implementación anterior.
-
12 Reto: Asignar/remover grupos con un click
Realizaremos la misma operación anterior, pero, con los grupos.
-
13 Reto: Iterar matriz de grupos
Vamos a iterar la matriz de los grupos y permisos.
-
14 Demo: Sincronizar
Vamos a ver una demostración de las funciones de sincronización de permisos y grupos.
-
15 Proteger app: Definir permisos
Vamos a definir los permisos a usar en el resto de la sección.
-
16 Proteger app: Módulo de usuario
Vamos a proteger el módulo de usuario.
-
17 Proteger app: Redirecciones y limitaciones en la vista
Vamos a crear la lógica de redirecciones y limitaciones para acceder a recursos en la vista.
-
18 Proteger app: Filtro para proteger módulo de usuarios
Vamos a crear el filtro para verificar si el usuario está autenticado.
-
19 Proteger: controladores de ejemplo y redirecciones
Vamos a trabajar en los controladores de ejemplos.
Extra: Avanzado - Más componentes de CodeIgniter 4
-
1 Procesamiento de imágenes: fit
Operación fit para las imágenes cargadas en la carpeta upload.
-
2 Procesamiento de imágenes: crop
Operación crop para las imágenes cargadas en la carpeta upload.
-
3 Procesamiento de imágenes: quality
Operación quality para las imágenes cargadas en la carpeta upload.
-
4 Procesamiento de imágenes: rotating
Operación de rotación para las imágenes cargadas en la carpeta upload.
-
5 Procesamiento de imágenes: resizing
Operación de escalado para las imágenes cargadas en la carpeta upload.
-
6 Procesamiento de imágenes: múltiples operaciones
Múltiples operaciones sobre la imagen.
-
7 Caché de las páginas
Vamos a conocer el uso de la caché de las páginas web en nuestra aplicación.
-
8 Caché de los datos
Vamos a aprender a guardar caché de registros o arrays en CodeIgniter y eliminar las mismas.
-
9 Introducción a las configuraciones personalizadas
Vamos a aprender a crear archivos de configuraciones y propiedades en CodeIgniter.
-
10 Generar logs de sistema
Vamos a aprender a cómo podemos generar archivos logs de diversos niveles en nuestra app y cómo funcionan en nuestro framework.
-
11 Generar archivos de lenguaje
Vamos a aprender a cómo podemos crear nuestros archivos de configuración para convertir nuestra app en multilenguaje.
-
12 Detectar el idioma del cliente y traducir la app con los lenguajes soportados
Vamos a aprender a detectar el idioma del navegador del usuario desde CodeIgniter 4.
-
13 Traducir un formulario
Vamos a hacer un ejercicio de traducción en español e ingles para el CRUD de categorías.
-
14 Objeto request
Vamos a analizar que podemos obtener con el objeto request de CodeIgniter 4.
-
15 Transacciones
Vamos a aprender el uso de las transacciones en la base de datos, para que en caso de que ocurra una excepción, devolver todas las operaciones realizadas en este bloque.
-
16 Metadata de la base de datos
Vamos a conocer un conjunto de funciones que nos permitirá obtener metadatos de la base de datos configurada al proyecto.
Extra: Trabajando con librerías
-
1 Métodos put, patch y delete
Vamos a conocer un mecanismo que nos permitirá enviar peticiones vía Put, Patch o delete enmascarado.
-
2 Haciendo peticiones HTTP (CURL): get y delete
Vamos a aprender a enviar peticiones http en CodeIgniter: get y delete.
-
3 Haciendo peticiones HTTP (CURL): post y put
Vamos a aprender a enviar peticiones http en CodeIgniter: post y put.
-
4 Detectando el agente (tipo de dispositivo y navegador)
Vamos a aprender a detectar el dispositivo y navegador que esté empleando nuestro usuario.
-
5 Enviando emails
Vamos a enviar emails empleando Mailtrap.
-
6 Encriptando textos
Vamos a aprender a proteger nuestros textos encriptando los mismos.
-
7 Trabajando con fechas
Vamos a aprender a trabajar con las fechas, obtener la fecha actual a futuro o pasado.
-
8 Trabajando con las URIs
Vamos a aprender a trabajar con las URIs y URLs y obtener datos de la misma.
-
9 Trabajando con archivos
Vamos a aprender a trabajar con los archivos empleando CodeIgniter 4 que nos brinda un conjunto de funciones para tal fin.
Extra: Trabajando con helpers
-
1 Array Helper
Vamos a conocer un helper que nos permite buscar entre la estructura del array fuente.
-
2 File System
Vamos a conocer como podemos obtener las carpetas y archivos en base a path y crear archivos.
-
3 Number
Vamos a ver cómo podemos trabajar con números y su representación en kb,mb, etc, números en cantidades etc.
-
4 Text helper
Vamos a conocer algunas funciones bastante interesantes para trabajar con textos, por ejemplo, generar string aleatorios.
-
5 Url Helper
Vamos a conocer algunas funciones para crear URLs y manejar las mismas.
Crear nuestro propio sistema de CRUD automatizado
-
1 Introducción
-
2 Explorar inspiración para el proyecto
Vamos a explorar algunos proyectos para buscar inspiración sobre el proyecto que vamos a llevar a cabo en esta sección.
-
3 Crear controlador maestro
Vamos a crear el controlador base y maestro para las operaciones CRUD.
-
4 Crear controlador de ejemplo para el CRUD
Vamos a crear un controlador de apoyo que herede o implemente el controlador maestro/base definido anteriormente.
-
5 Crear listado inicial: Generar Datos
Vamos a generar el listado de datos con el cual vamos a trabajar.
-
6 Obtener las columnas de la tabla
Vamos a obtener el nombrado de las columnas de los registros con los cuales vamos a trabajar.
-
7 Obtener la URL o URI desde el request
Vamos a ver cómo podemos obtener la URI o URL desde el request.
-
8 Crear listado inicial: Construir tabla
Vamos a construir la vista para el listado de la tabla.
-
9 Crear listado inicial: Construir enlace del CRUD: Edición
Vamos a construir el enlace de edición y la sección para las acciones.
-
10 Crear listado inicial: Construir cabecera
Vamos a construir la cabecera de la tabla.
-
11 Cargar vistas para la cabecera y el footer
Vamos a emplear vistas personalizadas para el layout base del CRUD.
-
12 Definir un modelo para el CRUD mediante una función
Vamos a definir la opción o propiedad para indicar con qué modelo vamos a trabajar.
-
13 Crear función para editar registros
Vamos a crear una función para editar los registros.
-
14 Crear función para obtener el baseURL del proyecto + URI base
Vamos a crear un método para poder operar fácilmente con la URL base de nuestra app + la uri principal del controlador.
-
15 Crear vista para editar registros
Vamos a crear la página inicial para editar un registro.
-
16 Definir función para actualizar los registros
Vamos a crear la función inicial para editar un registro.
-
17 Definir tipos de campos según campos en la base de datos (controlador)
Vamos a crear el proceso o función que se encarga de analizar el tipo de columna para indicar que tipo de campo de formulario tiene que construir.
-
18 Crear esquema para definir tipos de campos para el formulario (vista)
Vamos a crear los tipos de campo según el proceso anterior.
-
19 Valor anterior en los formularios
Vamos a establecer el método de old para guardar los valores anteriores.
-
20 Definir función y vista para la creación
Vamos a crear la función y vista para la fase de inserción.
-
21 Crear función para insertar un registro
Vamos a crear la función de registrar o insertar un registro.
-
22 Definir validaciones
Vamos a aplicar validaciones sobre el formulario.
-
23 Crear listados de selección para las relaciones foráneas en el controlador
Vamos a crear un conjunto de métodos para el manejo de las relaciones foraneas.
-
24 Crear listados de selección para las relaciones foráneas en la vista
Vamos a consumir el listado anterior.
-
25 Crear listados de selección: Detalles finales
Vamos a resolver algunos pequeños detalles que dejamos pendiente.
-
26 Crear listados de selección: selección por defecto en edición
Vamos a establecer un option del select por defecto en edición.
-
27 Ocultar campo de id
Vamos a ocultar el campo de ID del formulario.
-
28 Eliminar: Configurar modal al momento de dar clic en un enlace
Vamos a abrir un modal al dar click en un botón.
-
29 Eliminar: Crear función en el controlador para eliminar
Vamos a crear la función que se va a encargar de eliminar un registro.
-
30 Eliminar: Definir formulario para eliminar registro
Vamos a definir el formulario y lógica para eliminar un registro.
-
31 Activar la paginación en la tabla
Vamos a adaptar una opción para habilitar la paginación en nuestro listado.
-
32 Labels para el formulario y tabla/listado
Vamos a adaptar un listado de labels para representar las columnas.
-
33 Demo: Mostrar excepción con configuración incorrecta
Vamos a mostrar un ejemplo de unas validaciones sobre alguna propiedad definida.
Sistema de Facturación
-
1 Introducción
-
2 Crear Proyecto
Crearemos un nuevo proyecto mediante composer y configuración de la base de datos.
-
3 Migración: Categoría y etiquetas
Vamos a crear las migraciones de las categorías y las etiquetas.
-
4 Migración: Producto
Vamos a crear la migración para los productos.
-
5 CRUD para las categorías
Vamos a crear un sencillo CRUD para las categorías.
-
6 Extra: Mostrar errores del formulario
Vamos a mostrar los errores de los formularios por sesión SOLO si no te funciona el esquema original.
-
7 CRUD para las etiquetas
Vamos a crear el CRUD para las etiquetas.
-
8 Agrupar rutas y cambiar el namespace
Vamos a agrupar unas rutas y guardar nuestros controladores CRUD en una carpeta.
-
9 CRUD para los productos, enfoque inicial
Vamos a crear el CRUD para los productos, replicando nuevamente lo que hicimos anteriormente.
-
10 CRUD para los productos, resto de los campos
Vamos a crear el CRUD para el resto de los campos que definimos en la migración.
-
11 CRUD para los productos, plugin WYSIWYG
Vamos a instalar un plugin para el contenido enriquecido de la descripción del texto vía la CDN.
-
12 CRUD para los productos, Terminar listado de productos
Colocaremos el resto de los campos para el listado de productos.
-
13 Generar un PDF: Instalar la herramienta y primeras pruebas
Vamos a generar a instalar una librería para los pdf y generar un documento PDF de ejemplo.
-
14 Aumentar las cantidades y devolver una respuesta json
Vamos a registrar en la base de datos los cambiosq ue realicemos mediante el aumento del stock.
-
15 CRUD para los productos, Generar migración para manejar el stock
Vamos a generar una migración para manejar las salidas y entradas de nuestros productos.
-
16 CRUD para los productos, Generar modelo para el control de los productos
Vamos a generar el modelo para el control de los productos.
-
17 CRUD para los productos, Registrar log (ProductControl) en la función addStock
Vamos a modificar la función para agregar entradas.
-
18 CRUD para los productos, Aumentar cantidades desde el listado
Mediante un input y una petición fetch, vamos a registrar el aumento de los productos.
-
19 Extra: CRUD para los productos, Remover flechas input number
Una rápida explicación de cómo podemos remover las flechas de los campos de formulario de tipo número.
-
20 CRUD para los productos, Remover cantidades desde el listado
Mediante un input y una petición fetch, vamos a registrar la salida de los productos.
-
21 CRUD para los productos, Adaptar pase de id y a todos los productos
Vamos a pasar el ID para la petición así como adaptar que cualquier producto pueda ser editado.
-
22 CRUD para los productos, Validar datos de entrada desde el controlador
Vamos a validar la data de entrada mediante el esquema de validación que nos ofrece Codeigniter 4.
-
23 CRUD para los productos, Verificar respuesta del servidor desde la vista
Vamos a procesar la respuesta del servidor que generamos anteriormente desde la vista.
-
24 CRUD para los productos, replicar los pasos anteriores
Vas a replicar las dos últimas operaciones sobre otra función.
-
25 CRUD para los productos, Convertir las funciones anteriores una petición POST
Vamos a convertir las funciones de get a POST.
-
26 Generar migración y modelo para el cliente/usuario de la app
Vamos a crear la migración y modelo para nuestros usuarios.
-
27 Actualizar Stock en el listado
Vamos a actualizar el stock del listado desde JavaScript.
-
28 Seeds, Generar usuarios de prueba
Vamos a generar usuarios de prueba para emplear en la aplicación.
-
29 Registrar usuario en ProductsControl, generar migración
Vamos a conocer como modificar una migración existente para agregar nuevas columnas.
-
30 Reto: Modificar migración de tipos para los usuarios
Vas a cambiar otra migración para modificar una columna.
-
31 Crear un componente con un listado de usuarios/customers
Vamos a crear un componente que vamos a emplear cuando asignemos una salida desde el listado.
-
32 Aceptar el usuario desde el controlador
Vamos a procesar la petición completa, registrando el usuario.
-
33 Reto: Realizar los pasos correspondientes para la salida de mercancia
Vas a replicar los pasos realizados hasta este punto.
-
34 Pasar tipo para indicar el recurso a consumir
Vamos a crear un atributo desde los botones para definir el tipo.
-
35 Crear función json para mostrar los proveedores o clientes
Vamos a crear una función para consumir o clientes o proveedores.
-
36 Consumir la función anterior desde la vista para popular el select
Vamos a desarrollar un JavaScript para mostrar ya sea los proveedores o clientes.
-
37 Validar que el tipo de usuario sea válido
Vamos a verificar que el usuario sea el tipo según cada acción que queramos emplear.
-
38 Crear una validación personalizada: Validar el usuario
Con la funcionalidad que creamos anteriormente para validar los usuarios, vamos a crear una validación personalizada.
-
39 Crear una validación personalizada: Pasar el tipo
Vamos a adaptar otra validación más genérica en la cual podamos pasar parametros desde la definición de la regla.
-
40 Crear una validación personalizada: Verificar validaciones en el controlador
Vamos a aplicar las validaciones desde los controladores.
-
41 Verificar que existe stock al momento de realizar una venta
Vamos a evitar el stock negativo.
-
42 ¿Validar el producto desde el request?
Vamos a hablar sobre las validaciones sobre los productos.
-
43 Generar migración y modelo para ProductUserControl
Vamos a generar las migraciones para mantener más información sobre el proceso de un producto.
-
44 Formulario para registrar compra (proveedores) y venta (clientes)
Vamos a colocar más campos para el campo de compra/venta del producto.
-
45 Mostrar errores por el diálogo
Vamos a mostrar los errores de formulario en el diálogo.
-
46 Reiniciar el diálogo
Vamos a reiniciar el formulario al enviar el mismo.
-
47 Mostrar el detalle (traza) del producto: entradas y salidas
Vamos a crear un listado para ver todas las operaciones realizadas para un producto.
-
48 Calcular el total
Vamos a calcular el total en los montos de la traza.
-
49 Filtros en la traza
Vamos a filtrar por los tipos de ventas, salida o entrada.
-
50 Filtros en la traza: Recordar selección al recargar la página
Vamos a establecer la opción del tipo seleccionado según la selección del usuario.
-
51 Filtros en la traza: Usuario
Crearemos un filtro para el usuario.
-
52 Filtros en la traza: Cantidad, lado del cliente
Vamos a crear un filtro por rango para las cantidades.
-
53 Filtros en la traza: Cantidad, lado del servidor
Vamos a recibir los datos desde el servidor.
-
54 Filtros en la traza: Cantidad, activar/desactivar y detalles finales
Filtros en la traza: Cantidad, activar/desactivar y detalles finales
-
55 Filtros en la traza: Filtrar los usuarios por tipo
Vamos a crear un filtro por usuario.
-
56 Filtros en la traza: Campo de búsqueda
Vamos a crear un campo de búsqueda para los filtros y buscar por varias columnas.
-
57 Filtros en la traza: Campo de búsqueda, búsqueda por tokens
Potenciaremos el campo de búsqueda buscando por palabras.
-
58 Filtros en la traza: Limpiar formulario
Opción para limpiar los filtros.
-
59 Demo: Generar PDF de la traza del producto
Con la estructura que tenemos actualmente, vamos a generar un pdf.
-
60 Categorías: Definir en el CRUD
Vamos a definir las categorías en el flujo básico del CRUD, crear y actualizar
-
61 Categorías: Filtro en el listado
Crearemos un filtro de categorías en el listado.
-
62 Tags, relaciones muchos a muchos: Definir migración de productos y tags
Vamos a crear la migración para la tabla pivote de las relaciones muchos a muchos.
-
63 Tags: Insertar tags en actualizar parte 1, actualizar y validaciones
Vamos a trabajar en parte de la actualización, que sería en la inserción de datos en la base de datos.
-
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
Vamos a configurar el select multiple para que trabaje tanto con los valores actuales como los anteriores del formulario.
-
66 Tags: Eliminar tags NO seleccionados
Vamos a crear la consulta a la base de datos para eliminar las etiquetas.
-
67 Tags: Filtro en el listado, groupBy y joins
Vamos a crear un filtro por etiquetas en el listado.
-
68 Tags: Filtro en el listado, selected en los tags
Vamos a dejar seleccionado por defecto los tags del usuario.
-
69 Tags: Filtro en el listado, búsqueda individual de etiquetas (otra forma)
Vamos a ver otra posible solución la búsqueda por tags.
-
70 Tags: Filtro en el listado, checkbox en vez de select multiple
Presentaremos otra variación para nuestro select multiple de tags.
-
71 Publicar en git
Sistema de Facturación: Bootstrap 5
-
1 Introducción
-
2 Sobre el proyecto
Vamos a hablar sobre el proyecto con el cual vamos a trabajar en esta sección.
-
3 Instalar Bootstrap 5
Vamos a instalar y configurar Bootstrap 5 en el proyecto.
-
4 Configurar el layout (container) y estructura HTML básica
Configuraremos el aspecto más global de la aplicación que es la del container.
-
5 Configurar botones
Configuraremos los botones para algunas pantallas.
-
6 Configurar formularios
Vamos a aplicar los form-control sobre los formularios.
-
7 Configurar formularios
Vamos a aplicar los form-control sobre los formularios.
-
8 Configurar el header
Vamos a configurar un navbar para la app.
-
9 Listado: Filtros
Vamos a trabajar con los el diseño de los filtros en la vista de index.
-
10 Traza: Características
Vamos a trabajar en la parte de las características en la pantalla de trazas.
-
11 Tablas
Vamos a trabajar en las tablas.
-
12 Paginación
Definiremos el diseño para la paginación.
-
13 Modal para formulario para registrar compra (proveedores) y venta (clientes)
Vamos a trabajar en el formulario para realizar las ventas y movimientos de nuestros productos, lo convertiremos en un modal.
-
14 Mostrar errores formulario
Vamos a mostrar los errores de los formularios.
-
15 Publicar en git
Extra: Integrar la SDK de Facebook
Integrar PayPal en CodeIgniter
-
1 Introducción
-
2 Crear aplicación en CodeIgniter y estructura base
Vamos a crear un nuevo proyecto y funciones para trabajar en el proyecto.
-
3 Sitio de desarrolladores de PayPal
Vamos a conocer las páginas que vamos a usar para trabajar con API de PayPal.
-
4 CURL Request
Vamos a conocer el mecanismo a utilizar para realizar peticiones HTTP.
-
5 Botón de PayPal JS
Vamos a crear el botón para crear la orden por PayPal.
-
6 Generar el token de acceso
Vamos a generar el token de acceso para poder procesar la orden.
-
7 Demo: Procesar la orden, CURL CodeIgniter
Vamos a procesar la orden mediante CURL de CodeIgniter.
-
8 Procesar la orden, CURL PHP
Vamos a procesar la orden mediante CURL de PHP.
-
9 Detalles finales
Vamos a componer la ruta y realizar una petición fetch con la orden.
-
10 Publicar en git
Extra: CodeIgniter 4 en producción
-
1 Introducción
-
2 Apache: Exportar el proyecto vía FTP, archivos a emplear y primeros pasos
Vamos a dar algunos tips y procesos para lanzar la app en CodeIgniter 4 a Producción.
-
3 El archivo .env
Vamos a hablar sobre las configuraciones que tienes que realizar a nivel del proyecto.
-
4 Configurar CodeIgniter 4 en un dominio y remover el index.php
Vamos a adaptar la app de CodeIgniter 4 a un dominio.
Archive -Básico - Primeros pasos con CodeIgniter 4
-
1 Requerimientos de CodeIgniter 4 y software a emplear
Vamos a hablar sobre el software necesario para poder crear tus aplicaciones en CodeIgniter 4; un XAMPP y un composer básicamente.
-
2 Instalar CodeIgniter 4 con composer
Vamos a instalar CodeIgniter 4 mediante composer.
-
3 Demo: instalar CodeIgniter 4 manualmente
Vamos a instalar CodeIgniter 4 de manera manual.
-
4 Ejecutar nuestro CodeIgniter desde el navegador
Vamos a ejecutar CodeIgniter desde el navegador y de esta manera ver el producto de nuestro trabajo hasta este punto.
-
5 Demo: Generar URL limpia desde XAMPP o equivalente
Vamos a generar de manera manual una URL limpia mediante nuestro WAMPP/LAMPP que es una de las características que realiza nuestro Laragon por nosotros.
-
6 Visual Studio Code como IDE para desarrollar en CodeIgniter
Vamos a hablar un poco sobre VSC para desarrollar nuestras aplicaciones en PHP.
-
7 Requisitos para tomar el curso
Para tomar necesitas tener conocimientos básicos en la programación, que conozcas y entiendas el esquema de MVC, Modelo Vista controlador y que conozcas aspectos de tecnologías web como HTML, CSS y un poco de JavaScript así que hayas creado cualquier app al menos sencilla empleando Bootstrap en cualquier versión y por supuesto, muchas ganas de aprender y trabajar con este tipo de framework.
-
8 Explicar estructura de un proyecto en CodeIgniter
Vamos a explicar la estructura de un proyecto en CodeIgniter 4 que nos servirá para crear los distintos componentes más adelante.
-
9 Rutas, vistas y controlador base
Vamos a crear la ruta inicial para nuestro controlador base.
-
10 Crear nuestro primer controlador y ruta asociada
Vamos a crear nuestro primer controlador y vamos a crear una ruta asociada al mismo para que pueda ser accedido mediante la URL.
-
11 Crear nuestra segunda ruta, método en el controlador y vista asociada
Vamos a crear otra función y una vista asociada a la misma.
-
12 Crear nuestro segundo controlador y organizarlos en una carpeta aparte
Vamos a crear otro controlador y vamos a crear un método y una vista asociada que es la que va a ser devuelta mediante nuestro controlador.
-
13 Trabajar con múltiples vistas
Vamos a trabajar con múltiples vistas, de tal manera que vamos a mejorar nuestra organización y con esto tener una especie de templates para parte de nuestro sistema.
-
14 Pase de datos entre controlador y vista
Vamos a aprender a pasar datos entre el controlador y la vista.
-
15 Rutas: pase de datos a funciones de los controladores
Vamos a aprender a pasar datos entre las funciones a las vistas.
-
16 Rutas: Navegación entre páginas
Vamos a hacer una sencilla navegación entre páginas, teniendo como elemento central la vista de contacto.
-
17 Rutas: Rutas con nombre
Vamos a crear rutas con nombre, para definir rutas mediante los enlaces con el nombre de la misma.
-
18 Rutas: Bug en las rutas
Vamos a explicar un bug que ocurre actualmente al momento de definir una ruta.
-
19 Presentación de las migraciones para la planificación de nuestra base de datos
Vamos a presentar el nuevo mecanismo que tenemos en CodeIgniter 4 para crear nuestra estructura de base de datos y planificar la misma: las migraciones.
-
20 Crear la conexión a la base de datos
Antes de crear la base de datos, es necesario crear la conexión de la base de datos.
-
21 Presentación de la línea de comandos de CodeIgniter
Vamos a conocer la línea de comandos que nos ofrece CodeIgniter 4: spark
-
22 Migraciones: Crear la tabla movies
Vamos a crear nuestra primera migración; la tabla movies.
-
23 Migraciones: Crear la tabla categories
Como ejercicio, vamos a crear otra migración para manejar las categorías de nuestras películas.
-
24 Migraciones: Revertir cambios: rollback
Vamos a aprender a cómo podemos revertir cambios en la base de datos mediante el comando rollback lo cual es un mecanismo esencial en la planificación de nuestra base de datos.
-
25 Seeder: Generar datos de prueba en nuestra aplicación
Vamos a aprender a cómo podemos crear datos de prueba en CodeIgniter 4 mediante los seeder.
-
26 Seeder: Truncar la tabla desde los seeder
Antes de ejecutar un seeder, lo ideal es que limpiemos toda la base de datos de registros, en otras palabras, truncar la base de datos.
-
27 Seeder: Generar muchos registros de prueba
Vamos a aprender a cómo podemos crear muchos registros de prueba mediante los seeder.
-
28 Modelo: crear modelo para conectarnos a nuestra base de datos
Vamos a crear nuestro primer modelo y conectarnos a nuestra base de datos.
-
29 Modelo: Crear modelo de categorías
Vamos a crear el siguiente controlador que sería para manejar las categorías.
-
30 El archivo .env en CodeIgniter 4
Vamos a presentar y emplear el archivo .env de CodeIgniter 4 para configurar nuestra base de datos.
-
31 Actualizar CodeIgniter 4
Vamos a aprender cómo podemos tener nuestro CodeIgniter 4 siempre actualizado con la última versión del framework.
-
32 ¿Qué hemos aprendido?
Archive -Intermedio - Creando nuestro CRUD
-
1 Introduccion
-
2 Crear la vista de listado de las películas
Vamos a crear el listado inicial para nuestras películas, para eso vamos a conectarnos a nuestro modelo de películas y obtener todos los datos.
-
3 Más características del findAll()
Vamos a seguir explorando el findAll para obtener todos los datos de una manera paginada.
-
4 Paginar registros
Vamos a conocer el mecanismo oficial para pagina registros de nuestra base de datos y construir links de navegación automáticamente.
-
5 Rutas: Agrupar rutas
Vamos a conocer un sencillo mecanismo que tenemos para agrupar rutas en CodeIgniter 4 y de esta manera poder modularizar nuestra aplicación a nivel de rutas.
-
6 Rutas: Ruta de tipo recurso para nuestro controlador Movie
Vamos a conocer un nuevo tipo de rutas y vamos a adaptarlo a nuestro proyecto para nuestro CRUD de películas.
-
7 Crear nuestra función y estructura genérica para el controlador de películas
Vamos a hacer una pequeña refactorización en nuestro controlador de películas para tener una función que maneje recursos comunes.
-
8 Definir el formulario para crear películas
Vamos a crear nuestro formulario para crear las películas y configurarlo con un método en nuestro controlador de películas.
-
9 Formularios: Recibir los datos
Vamos a aprender a recibir los datos del formulario que envía nuestro usuario desde una función en el controlador.
-
10 Formularios: Validar los datos
Vamos a aprender a validar los datos de formulario mediante la clase Validation de CodeIgniter.
-
11 Formularios: Mostrar errores en la vista
Vamos a aprender a mostrar los errores de formulario en una vista.
-
12 Formularios: Guardar datos en la base de datos
Una vez procesados y validados los datos, lo siguiente que vamos a aprender es a guardar los datos en nuestra base de datos.
-
13 Formularios: Campos permitidos para guardar o actualizar
Formularios: Campos permitidos para guardar o actualizar
-
14 Formularios: Redirección y mensajes por sesión
Vamos a aprender a hacer redirecciones y enviar mensajes por sesión.
-
15 Eliminar registros
Vamos a aprender a eliminar registros.
-
16 Actualizar: Crear funciones y vistas asociadas
Vamos a aprender a actualizar registros, para eso vamos a apoyarnos en el formulario de creación.
-
17 Actualizar: valores por defecto y anterior en el formulario
Vamos a aprender a emplear la función old en conjunto con las redirecciones en CodeIgniter.
-
18 Definir un formulario base para la creación y actualización
Vamos a definir un formulario base y únicos para emplear tanto en actualizar como en crear.
-
19 Crear partials para los mensajes de sesión y errores de formulario
Vamos a crear un par de vistas para manejar los mensajes de errores del formulario y de sesión.
-
20 Botón para crear
Vamos a implementar un enlace para crear registros.
-
21 Cargar imágenes o archivos
Vamos a aprender a cargar archivos o imágenes en CodeIgniter, mover a un ubicación en específico y renombrar el mismo.
-
22 Validaciones adicionales al momento de cargar la imagen
Validaciones adicionales al momento de cargar la imagen
-
23 Crear tabla (migración) para guardar imágenes
Vamos a crear una nueva migración para manejar las imágenes de las películas.
-
24 Cargar imágenes y registrar en la base de datos
Vamos a aprender a registrar las imágenes cargadas en la base de datos (el nombre de las mismas).
-
25 Redirección a actualizar en vista de creación
Vamos a crear una redirección a la vista de crear una vez que actualizamos el registro.
-
26 Personalizar formulario de creación/edición
Vamos a personalizar el formulario de creación o edición según si estamos en modo creación o edición.
-
27 Crear carpeta para guardar imágenes
Vamos a crear carpetas de manera dinámica para cargar imágenes organizadas por el ID de la película.
-
28 Verificar id nulo
Vamos a hacer algunas verificaciones y conocer el uso de las excepciones en CodeIgniter 4 para mostrar errores cuando el ID no es encontrado o el registro asociado al mismo.
-
29 Modificar migración de movie para las categorías: rollback y refresh
Vamos a aprender a emplear los comandos de rollback y refresh para las migraciones.
-
30 Crear seeder para las categorías
Vamos a crear un seeder de categorías.
-
31 Crear listado de categorías
Vamos a crear el select de categorías en el formulario de gestión de las películas.
-
32 Listado de categorías en actualizar película
Vamos a hacer los cambios para que pueda ser procesado la categoría desde la edición de la película.
-
33 Mostrar categoría en listado de películas
Vamos a agregar las categorías para el listado de películas haciendo un join en el pagination.
-
34 Validar datos de formulario mediante una clase aparte
Vamos a manejar las validaciones del formulario desde un archivo aparte.
-
35 Aprendido
Archive - Intermedio - Instalar y configurar Bootstrap en la aplicación
-
1 Introduccion
-
2 Instalar la CDN de Bootstrap 4 o 5 y dependencias en CodeIgniter 4
Vamos a aprender a instalar bootstrap mediante la CDN en nuestro proyecto.
-
3 Opcional: Emplear Bootstrap 5
-
4 Bootstrap: Configurar las tablas
Vamos a aprender a configurar las tablas para que tomen el diseño de Bootstrap.
-
5 Bootstrap: Configurar formulario
Vamos a aplicar el diseño de Bootstrap al formulario.
-
6 Bootstrap: Configurar el layout de la app
Vamos a configurar el layout de la app para que no ocupe todo el ancho de la pantalla.
-
7 Bootstrap: Alert para los mensajes
Vamos a trabajar con los alert para mostrar los mensajes de sesión.
-
8 Bootstrap: Links de paginación y creación de vista personalizada en CodeIgniter
Vamos a construir los links de paginación en Bootstrap, definiendo las clases y también vamos a personalizar la plantilla de los links en CodeIgniter.
-
9 Activar la clase de paginación
Vamos a definir el header de nuestra app con los enlaces de navegación.
-
10 Bootstrap: header o cabecera de nuestra app
Vamos a definir el header de nuestra app con los enlaces de navegación.
-
11 Personalizar los errores de formulario en CodeIgniter 4
Vamos a personalizar la plantilla de los errores en CodeIgniter para mostrar un componente de Bootstrap.
-
12 CRUD imágenes movies: Listar
Vamos a crear un listado de imágenes de la película seleccionada en la edición.
-
13 CRUD imágenes movies: Procesar y devolver desde el servidor
Vamos a procesar las imágenes de nuestro servidor para poder devolver las mismas mediante una ruta.
-
14 CRUD imágenes movies: get y validar errores al momento de proceso
Vamos a expandir la función que procesa nuestra imagen, para eso vamos a validar posibles errores y soporte vía get de los parámetros.
-
15 CRUD imágenes movies: Definir la nueva ruta
Vamos a definir una ruta para las imágenes de las películas.
-
16 CRUD imágenes movies: Columnas en Bootstrap
Vamos a seguir con el diseño de nuestro listado de películas y vamos a colocar las imágenes dentro de un grid.
-
17 CRUD imágenes movies: Eliminar imágenes, botón personalizado
Vamos a definir un botón o enlace para eliminar las imágenes.
-
18 CRUD imágenes movies: Eliminar imágenes, dar funcionalidad al botón
Vamos a dar funcionalidad desde una función en el controlador para borrar la imagen.
-
19 Vista de detalle: Cartas en Bootstrap
Vamos a definir el detalle de una película en un componente en de carta en Bootstrap.
-
20 Vista de detalle: Carrusel de imágenes
Vamos a seguir con la vista de detalle y vamos a crear un carrusel para mostrar todas las imágenes de películas.
-
21 Instalar Font Awesome para nuestros íconos
Vamos a instalar nuestro paquete de íconos para colocar en nuestros botones.
-
22 Incorporar tooltip en el listado
Vamos a definir los mensajes del tooltip para los botones y definir mediante mensajes las acciones que van a realizar.
-
23 Tarea: CRUD de categorías
Vamos a duplicar todo lo que hemos hecho hasta este punto para crear el módulo CRUD de películas para emplearlo en el CRUD de las categorías.
-
24 Detalles: Centrar paginación, título, ancho extra descripción
Vamos a realizar una sencillas correcciones a nivel visual en nuestra aplicación.
-
25 ¿Qué hemos aprendido?
Archive - Intermedia - Creando nuestro módulo de login y usuario
-
1 Introduccion
-
2 Crear ruta y controlador para el login
Vamos a crear las rutas, y controlador para entender la organización que vamo a llevar a cabo para el módulo de usuario.
-
3 Crear vista para el login
Vamos a crear la vista de login empleando un snippets.
-
4 Crear migración y modelo para el usuario
Vamos a crear una migración para la estructura de la tabla de usuarios y también el modelo.
-
5 Mover controlador de Usuarios
Vamos a realizar una pequeña organización en nuestra aplicación para que podamos crear otro controlador llamado User para la gestión.
-
6 CRUD de usuarios: proceso inicial
Vamos a realizar el CRUD básico para el usuario.
-
7 CRUD de usuarios: crear un hash de la contraseña con un helper
Vamos a seguir trabajando en el CRUD de nuestra aplicación y vamos a definir el hash de nuestro password mediante un helper personalizado y una función de PHP.
-
8 Verificar si el password es correcto
Vamos a crear una función en nuestro helper que verifique si el password/hash en correcto.
-
9 Procesar formulario de login
Vamos a trabajar para recibir los datos vía post de nuestro usuario, vamos a manejar los errores de manera manual y hacer la comparación del hash del password.
-
10 Presentación de la sesión
Vamos a evaluar el uso de la sesión, conocer sus característica y dar un pequeño ejemplo.
-
11 Cerrar sesión
Vamos a implementar el cerrado de la sesión o destrucción de la misma.
-
12 Guardar datos de login en sesión
Vamos a seguir trabajando con el procesado de los datos del usuario, y una vez que los datos son válidos, los establecemos en sesión.
-
13 Terminar de procesar la petición para el login
Vamos a terminar de trabajar con el Post del login, y vamos a implementar las redirecciones.
-
14 Opción de cerrar sesión desde el header/nav
Vamos a colocar un enlace para cerrar la sesión desde el header del dashboard.
-
15 Introducción a los filtros: Proteger el módulo de dashboard
Vamos a implementar un filtro para que solamente los usuarios con tipo o rol de admin puedan ingresar al dashboard.
-
16 Parámetros obligatorios en los filtros
Importante
-
17 ¿Qué hemos aprendido?
Archive - Creando una tienda de películas
-
1 Introduccion
-
2 Crear controlador base
Vamos a crear el controlador madre para esta sección.
-
3 Crear vistas base
Vamos a crear las vistas principales que vamos a emplear en esta sección (template) y la de listado.
-
4 Crear vista de listado de películas
Vamos a crear las vista de listado de las películas.
-
5 Obtener una imagen por película y paginar los resultados
Vamos a obtener referencia a una imagen del listado de las películas.
-
6 Mostrar la imagen en el listado
Vamos a pintar una imagen en el listado de películas y terminar la consulta.
-
7 Crear la estructura para el detalle de la película
Vamos a crear la estructura para mostrar el detalle de la película.
-
8 Limitar cantidad de texto en el listado de películas
Vamos a limitar la cantidad de texto que vamos a colocar para cada película en en listado.
-
9 Agregar columna para el precio a la película
Vamos a agregar una columna precio para las películas en la tabla.
-
10 Agregar un botón y ruta para comprar una película
Vamos a agregar un botón y ruta para comprar una película.
-
11 Sobre la SDK de PayPal
Sobre la SDK de PayPal
-
12 Instalar la SDK de PayPal para hacer un cobro
Vamos a instalar la SDK de PayPal, oficial para hacer una compra.
-
13 Crear cuenta de desarrollo para PayPal
Vamos a crear las cuentas de PayPal para desarrollar.
-
14 Adaptar la aplicación para hacer un pago genérico (generar link para el pago)
Vamos a crear nuestro primer pago genérico a la plataforma de PayPal.
-
15 Configurar página para realizar el pago vía PayPal (buy)
Vamos a configurar la página para realizar el pago de PayPal.
-
16 Crear migración para registrar los pagos: Payment
Vamos a crear una migración para realizar el pago.
-
17 Crear modelo Payment
Vamos a crear el modelo para guardar los pagos desde nuestro framework.
-
18 Configurar el login obligatorio para comprar una película
Vamos a configurar que el login es requerido al momento de intentar comprar una película.
-
19 Validar que el usuario esté autenticado al momento de comprar una película
Vamos a verificar si el usuario está autenticado al momento de dar click sobre el botón de comprar.
-
20 Realizar la compra de una película mediante PayPal
Vamos a terminar el proceso de compra de PayPal de nuestra película.
-
21 Crear página de listado de las compras
Vamos a crear un listado de compras realizadas por el usuario.
-
22 Crear página de detalle de la compra
Vamos a crear una página de detalle de compras realizadas.
-
23 Redireccionar a la vista de detalle una vez realizada la compra (buy_success)
Vamos a crear la redirección al momento de comprar un producto a la vista de detalle.
-
24 Agregar enlace para compras del usuario
Vamos a agregar el enlace de comprar para ver el listado de los productos comprados.
-
25 Crear helper para formato de las fechas
Vamos a crear un helper para mostrar las fechas en otro formato.
-
26 Crear controlador para cargar sesión
Vamos a cargar la sesión de manera global.
-
27 Guardar el PaypalID y el tipo de pago
Vamos a crear un formulario para realizar búsquedas.
-
28 Crear buscador de películas: Formulario
Vamos a crear un formulario para realizar búsquedas.
-
29 Crear buscador de peliculas: Consulta
Vamos a hacer la consulta SQL del formulario de búsqueda anterior.
-
30 Crear buscador de peliculas: Filtrar por categorías
Vamos a agregar un filtro por las categorías.
-
31 Crear buscador de películas: Colocar valores por defecto en la selección
Vamos a imprimir los valores por defecto que coloque nuestro usuario al momento de empelar el buscador.
-
32 Integrar Stripe en CodeIgniter 4
Vamos a integrar la SDK de Stripe de PHP en CodeIgniter 4 mediante composer.
-
33 Crear una cuenta y la Api Key para la app en desarrollo
Vamos a registrarnos en Stripe y generar una Api Key.
-
34 Crear la intentencion de pago (PaymentIntent) y generar la clave secreta
Vamos a crear la especie de factura o intención de pago en Stripe.
-
35 Conociendo los fetch para consumir la clave secreta para realizar un pago
Vamos a terminar de definir el código fundamental para realizar una compra de nuestra tienda.
-
36 Terminando de establecer el código para realizar un pago con Stripe
Vamos a terminar de definir el código fundamental para realizar una compra de nuestra tienda.
-
37 Resolviendo el problema con el Toolbar Debug de CodeIgniter 4
Vamos a resolver un bug del framework que imposibilita consumir el json correctamente.
-
38 Demo: Realizando un pago y comprando el mismo
Vamos a realizar un pago de demostración y comprobar el mismo.
-
39 Procesar un pago vía Stripe bajo demanda: Separar vista de detalle y Stripe
Vamos a definir todo el contenido de Stripe en una vista aparte.
-
40 Crear un modal en Bootstrap 4
Vamos a crear un modal de Bootstrap 4 para luego configurarlo con el formulario de Stripe.
-
41 Crear un modal para procesar el pago de Stripe: Petición fetch desde vista show
Vamos a configurar el formulario de Stripe en el modal, para eso vamos a consumir el formulario de Stripe desde un fetch.
-
42 Mover JavaScript clave de Stripe a la función de detalle
Vamos a mover el JS del formulario de Stripe para la vista de detalle.
-
43 Demo: petición vía jQuery Ajax.
Vamos a hacer la demo con jQuery ajax en vez del fetch.
-
44 Crear un archivo aparte para manejar el JavaScript de la tienda
Vamos a crear un archivo para mantener el JavaScript para nuestro Store.
-
45 Opcional: Colocar precios de la película
Vamos a definir los precios en la vista de detalle y listado.
-
46 Realizando un pago para comprar una película
Vamos a configurar el pago de una película.
-
47 Refactorizar código JavaScript de Stripe
Vamos a hacer una pequeña refactorización del código JavaScript que definimos en otro archivo.
-
48 Definir estilo para el modal de Stripe
Vamos a variar el estilo del modal que creamos para mostrar la caja de card para Stripe.
-
49 Validar datos de la compra y registrar en la base de datos
Vamos a validar los datos de la compra y registrarla en la base de datos.
-
50 Crear fetch para enviar la petición con el identificador del pago
Vamos a crear una petición fetch para finalmente registrar el pago.
-
51 Devolver y consumir respuesta del procesamiento del pago
Vamos a devolver y consumir la respuesta del procesamiento del pago.
-
52 Colocar detalle del tipo de pago en las compras
Vamos a colocar el tipo de pago (stripe/paypal) en en listado de las compras y el detalle.
-
53 Colocar detalle del tipo de pago en las compras
Vamos a crear un archivo de configuración para manejar las credenciales.
-
54 Archivo de configuración: Credenciales de PayPal y Stripe de manera global
Vamos a crear un archivo de configuración para manejar las credenciales.
-
55 Archivo de configuración: Emplear las configuraciones en controlador y vistas
Vamos a emplear el archivo de configuración en nuestro controlador y vista.
-
56 Definir agrupado de rutas
Vamos a trabajar con las rutas agrupadas para nuestra tienda en línea.
-
57 Definir Foreign Key para los pagos
Vamos a definir una clave foranea de manera demostrativa para la columna de usuarios en la tabla de pagos.
-
58 PayPal PHP: Explicación de lo que ya tenemos
Vamos a explicar qué fue lo que logramos en con la integración de la Api versión 1 de PayPal.
-
59 PayPal PHP: Instalar el Rest Api SDK de PayPal en su versión 2
Vamos a instalar la última versión de PayPal en nuestro proyecto.
-
60 PayPal PHP: Generar una orden de prueba
Vamos a generar una orden de prueba para ver como funciona la plataforma de PayPal.
-
61 PayPal PHP: Realizar una compra de prueba
Vamos a realizar una compra de ejemplo con PayPal.
-
62 PayPal PHP: Comprar una movie
Vamos a configurar todo para que podamos comprar una movie.
-
63 PayPal PHP: Procesar respuesta de la compra
Vamos a trabajar en la respuesta que obtenemos de PayPal para registrar el pago.
Archive - Avanzado - Rest Api en CodeIgniter 4 (Películas)
-
1 Introducción
Introducción
-
2 Empezando con un controlador de tipo Rest
Vamos a dar los primeros pasos con un controlador de tipo Rest, conocer la estructura y personalizar las respuestas devueltas con json o xml.
-
3 Instalar PostMan para realizar peticiones a la Rest Api
Vamos a hablar sobre postman como el programa que vamos a emplear para realizar peticiones a nuestra RestApi.
-
4 Crear un producto: Definir esquema básico
Vamos a crear el esquema o la idea básica para crear un producto mediante nuestra Rest Api.
-
5 Crear un producto: Mostrar los errores de formulario
Vamos a mostrar los errores de formulario en la RestApi.
-
6 Crear un producto: Validar categoría válida
Vamos a crear una regla para validar por la categoría.
-
7 Normalizar respuesta de la RestApi
-
8 Mostrar un producto
Vamos a crear un método para mostrar el detalle de un producto.
-
9 Eliminar un producto
Vamos a implementar la eliminación de un producto en la RestApi.
-
10 Editar un producto
Vamos a desarrollar el método para actualizar una película mediante Put o Patch.
-
11 Listado de categorías
Vamos a crear otro método para obtener todas las categorías de nuestro sistema.
-
12 Recurso rest paginado
Vamos a crear un recurso Rest para obtener un listado paginado.
-
13 Recurso rest con filtros y paginado
Vamos a crear un recurso Rest para obtener un listado paginado con campos de búsqueda.
-
14 Respuesta personalizada para los métodos paginados
Vamos a crear una función que nos devuelva una respuesta personalizada para los métodos de paginación.
- Andrés Cruz
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter