Documentación efphp

Pues estamos trabajando en una documentación mucho más completa, esperamos te sirva esta.

Documentación

EasyPhp

EasyPhp es una herramienta creada para el rápido desarrollo de aplicaciones php orientadas a soluciones a la medida.

Setup

La configuración general de base de datos y rutas se adaptará en

/lib/Configuracion.php

Antes de comenzar a crear tablas es necesario ejecutar cuando menos una vez en un explorador el administrador el cual utilizará

/lib/Wizard.php

para crear las tablas base.

Accesos default

El usuario y contraseña default para poder entrar al administrador serán

  • Usuario:admin@efphp.
  • Contraseña:admin

Módulos default

Como default se generan las siguientes tablas

  • admin: Contiene el usuario base ADMINISTRADOR, almacenará futuros usuarios.
  • rol: Contiene el rol base ADMINISTRADOR, almacenará futuros roles.
  • cms: Contiene un ejemplo de contenido html el cual es mostrado en el frontend /BASEURL/index.php
  • menu: Contiene el menú raiz de donde heredarán todos los menús además de "home" el cual podrá visualizarse en el menú de /BASEURL/index.php en el explorador
  • log: Almacena todas las actividades que se realizen por parte de cualquier usuario, login, intento (satisfactorio o fallido) de abc.

Creación de tablas custom

El primer requisito para implementar la herramienta es el modelo de la base de datos. La base de datos deberá seguir la siguientes reglas

  1. Las llaves primarias deberán llamarse "id"
  2. Las llaves foraneas deberán llamarse "id_tablaQueRelaciona"
  3. Deberá tener la columna "nombre" cada tabla que sea relacionada e.g.

    administrador
    id:int(11)
    id_rol:int(11)
    nombre:varchar(255)
    usuario:varchar(255)
    password:varchar(255)
    rol
    id:int(11)
    nombre:varchar(255)

Tipos de datos para backend

Los tipos de datos y nombre de las columnas así como sus comentarios hacen que se comporten de manera distinta en el admin.

Nomenclatura Tipo de dato Resultado
id int
  • Editor: No genera input
  • Grid: Genera botón para ver el detalle del registro
id_llaveforanea int
  • Editor: Genera un dropdown con un join dinámico a la tabla relacionada mostrando la columna nombre de la tabla foránea
  • Grid: Genera un join dinámico que muestra la relación entre la tabla y la tabla relacionada mostrando la columna nombre de la tabla foránea
cms_nombrecolumna text
  • Editor: Genera un input con un editor WYSIWYG, acepta html, css, javascript
  • Grid: Muestra botón que lleva al preview del texto
nombrecolumna date
  • Editor: Genera un calendario dinámico que es mostrado cuando se da click en el input
  • Grid: Muestra el valor de la columna guardado sin alteración
img_nombrecolumna varchar(255)
  • Editor: Genera un input de tipo file el cual recibe extensiones [.png, .jpg, .gif] y guarda los archivos en /media/img/
  • Grid: Muestra el nombre del archivo
bool_nombrecolumna tinyint(1)
  • Editor: Genera un dropdown con opción sí y no [0 = no, 2 = sí]
  • Grid: Muestra ícono check o cross dependiendo el valor
status_nombrecolumna tinyint(1)
  • Editor: Genera un dropdown con opción sí, no y pendiente [0 = no, 1 = pendiente, 2 = sí]
  • Grid: Muestra ícono check, cross o admiración dependiendo el valor

Cada columna de la tabla puede tener un comentario el cual hará que funcione de la siguiente manera.

'Etiqueta para mostrar en formularios-Tipo de validación-Tipo de servicio'

e.g.

[Título-tel-normal]

Esto tendrá como resultado mostrar en el administrador la etiqueta en el input sustuyendo el nombre de la columna por "Título", el valor será validado como teléfono. (El tercer parámetro está en desarrollo)

Para agregar tipos de validación se puede modificar/agregar en

/js/lib.js:validator.validator(type, val, selector)

Un ejemplo de creación de tabla con estas características:

$table = "CREATE TABLE cms (
            id int(11) NOT NULL AUTO_INCREMENT,
            nombre varchar(255) DEFAULT NULL COMMENT 'Título-text',
            tag varchar(255) NOT NULL COMMENT 'Tag-text',
            cms_contenido text  NOT NULL COMMENT 'Contenido CMS-text',
            PRIMARY KEY (id)
            ) ENGINE=InnoDB AUTO_INCREMENT=31 DEFAULT CHARSET=utf8";

Implementación Frontend

Una vez configurado el proyecto se podrá acceder como usuario a

BASEURL/index.php

Toda sección que se quiera agregar al usuario se localizará en

/vistas e.g. /vistas/contacto.php

Y podrá ser invocada mediante la siguiente ruta

BASEURL/?s=contacto

Contenido

El contenido puede ser html puro o pueden utilizarse placeholers para que invoque bloques desde la base de datos mostrando el resultado de la tabla cms.

Para poder hacer esto es necesario crear un nuevo registro en el backend de cms. La columna tag será el identificador para poderlo mostrar en el frontend.

e.g. tag:contacto

la utilización sería de la siguiente manera

en /vistas/contacto.php se podrá poner cualquier contenido HTML y en donde se desee mostrar el contenido del cms se tendrá que utilizar la siguiente nomenclatura {{tag}}
el cual será igual al nombre del tag teniendo como resultado {{contacto}}. Un ejemplo de contenido dinámico el siguiente:

Home, contenido de base de datos

El cual es invocado con el tag {{home}} desde el código fuente de esta página.

Menú

El menú podrá administrarse desde el backend y podrá tener herencia anidada infinita tomando como padre id_menú. Si se utiliza "Main_Category" como padre se mostrará en el menú principal superior y esta será
(o no) padre de otras y así sucesivamente. La url será idéntica a como se quiera utilizar

?s=contacto

javascript

La funcionalidad javascript está deberá codificarse dentro de

/js/vistas.js

Teniendo dos funcionalidades

global : function(){}

Aquí se condificará todas las acciones generales del sitio.

Se deberán agregar funciones extras con el nombre de la vista que se quiera ejecutar en particular para todas las funciones que NO sean globales

e.g. global : function(){}, contacto : function(){ alert("Yo soy el contacto")}

css

Todos los estilos del sitio deberán estar situados en

/css/style.css

Avanzado

php

Todas las clases deberán nombrarse con el mismo nombre del archivo en mayúsculas y podrán ser ejecutadas con un controlador genérico de la siguiente manera

/lib/Execute.php?e=ClaseParaEjecutar/metodoParaEjecutar

Pudiendo agregar como parametro

/lib/Execute.php?e=ClaseParaEjecutar/metodoParaEjecutar/parametro1/parametro2&back=1

esto se convertirá en una llamada similar a

ObjetoClaseParaEjecutar->metodoParaEjecutar(parametro1,parametro2);

Para cuando se requiere regresar de manera automática a la página que invoca el servicio (utilizando back=1)

Implementación Administrador

El administrador deberá ser previamente configurado de la siguiente manera

/admin/config/menu.xml

Contiene la estructura de menú necesaria para cada rol de cada usuario administrador (véase archivo menu.xml)

La notación para generar módulos dentro del administrador será de la siguiente manera

subitemLink: ?s=tabla-admin

La cual generará un administrador de altas bajas y cambios para la tabla seleccionada