Вы находитесь на странице: 1из 29

SEINE FRAMEWORK

Estructura de directorios de SEINE...............................................................................................2


El directorio ASSETS.................................................................................................................2
El directorio DIST......................................................................................................................2
El directorio INC.......................................................................................................................3
El directorio SEINE....................................................................................................................3
¿Dónde se encuentra la capa del Controlador?.......................................................................5
Beneficios.............................................................................................................................5
Modelos.......................................................................................................................................6
El modelo CSV..........................................................................................................................6
El modelo EXCEL.......................................................................................................................7
El modelo FILES........................................................................................................................8
Método saveFile...................................................................................................................8
Método saveMultipleFile.....................................................................................................8
Método saveFileURL.............................................................................................................9
El modelo MAILS......................................................................................................................9
Método generateRecoveryMail..........................................................................................10
Método generateInvitationMail.........................................................................................10
Método generateReinvitationMail.....................................................................................10
El modelo TABLES...................................................................................................................11
Método generateBasicTable..............................................................................................11
Método generateCompleteTable.......................................................................................11
Método generateBasicDataTable.......................................................................................15
El modelo FORM.....................................................................................................................16
Método generateFormLogin..............................................................................................16
Método generateFormLogin..............................................................................................17
Método generateFormChangePassword............................................................................17
Método generateHeaderFormWizard................................................................................18
Método generateClassicFormArray....................................................................................19
Método generateClassicHorizontalFormArray...................................................................19
Método generateCodeClassicFormArray............................................................................19
Método generateCodeHorizontalClassicFormArray...........................................................20
Método generateSelectCustomBD.....................................................................................27
Método generateSelectBD.................................................................................................27

1
Estructura de directorios de SEINE
Una vez descargado y cuando hayas descomprimido el fichero, estos son los directorios que
verás:

 assets
 dist
 inc
 SEINE

Verás que tienes seis directorios principales:

 assets que es donde se almacenan todos los archivos jquery para que el tema de la
aplicación funcione e imágenes del tema.
 dist que es donde se almacenan todos los estilos css y librerías jquery para que el tema
de la aplicación funcione correctamente.
 inc Los diferentes ficheros que se incluyen en todas las páginas, que incluye la
cabecera, pié de página y menús.
 SEINE que es donde harás tu magia: aquí guardarás los ficheros de tu aplicación

El directorio ASSETS
En este directorio encontrarás un montón de utilidades destinadas a que el tema de la
aplicación funcione. El núcleo de SEINE no necesita este directorio para su funcionamiento,
puedes incorporar cualquier tema, ya sea BOOTSTRAP o similares, teniendo que hacer algunos
cambios que veremos posteriormente. Veamos el contenido de esta carpeta:

extra-libs

Contiene un montón de recursos e utilidades para nuestra aplicación, siempre


referentes a tema utilizado.

images

Este directorio contiene todas las imágenes, iconos, etc. que utiliza el tema que trae
por defecto SEINE.

libs

Contiene recursos que no son de terceros o externos a tu aplicación. Esto te ayuda a


separar tus librerías internas de las externas que estarán en la carpeta extra-libs.

El directorio DIST
Este directorio encontrarás todos los estilos y librerías de terceros para que el tema principal
que usa SEINE funcione correctamente. El núcleo de SEINE no necesita este directorio para su
funcionamiento, puedes incorporar cualquier tema, ya sea BOOTSTRAP o similares, teniendo
que hacer algunos cambios que veremos posteriormente. Veamos el contenido de esta
carpeta:

css

Contienen un montón de ficheros css que hacen referencia al tema principal de


nuestra aplicación. Puedes encontrar en dicha carpeta el fichero “custom.css” que es
dónde incorporaremos mejoras y nuevos estilos al tema visual que utiliza SEINE

2
js

Contiene recursos de terceros. Esto te ayuda a separar tus librerías internas de las
externas que estarán en la carpeta extra-libs o libs en la carpeta assets.

El directorio INC
Este directorio única y exclusivamente se utiliza para incluir los trozos de código repetidos que
se utilizan en las diferentes páginas de nuestra aplicación. Por ejemplo, la cabecera, el pie de
página y los menús son siempre idénticos sea cual sea nuestra página, con lo cual, podemos
incluirlos siempre en nuestras páginas para que los cambios que se realicen dichos ficheros se
vean reflejados en todas nuestras páginas.

El directorio SEINE
Este directorio es el más importante y es dónde se encuentra en núcleo de funcionamiento de
SEINE. Aquí es dónde podremos ver e incorporar la magia de nuestra aplicación. Veamos el
contenido de esta carpeta:

database

Contiene la clase referente al acceso a la base o bases de datos que utilizará nuestra
aplicación.

entity

Este directorio hace referencia a las entidades. Las entidades son las diferentes
asociaciones que se dedican a una actividad común. Por ejemplo, una empresa sería
una entidad y otra empresa sería otra entidad diferente.

injection

Contiene la clase referente a la seguridad para las posibles amenazas externas a la


aplicación, por ejemplo, SQL Injection que se puede producir en los diferentes campos
de texto que se ven en nuestra aplicación.

models

El modelo representa la parte de la aplicación que implementa la lógica de negocio.


Ésto significa que es responsable de la recuperación de datos convirtiéndolos en
conceptos significativos para la aplicación, así como su procesamiento, validación,
asociación y cualquier otra tarea relativa a la manipulación de dichos datos.

A primera vista los objetos del modelo pueden ser considerados como la primera capa
de la interacción con cualquier base de datos que podría estar utilizando tu aplicación.
Pero en general representan los principales conceptos en torno a los cuales se desea
implementar un programa.

NOTA: Los modelos que aquí se exponen, están asociados al tema por defecto de
SEINE. Por ejemplo, los formularios generan trozos de código HTML con estilos y
estructuras referente al tema actual. Si incluyéramos otro tema, deberíamos
reescribir los trozos de código HTML que hacen referencia a dicho tema. Sin
embargo, no deberíamos tocar la estructura lógica de dichos modelos.

En nuestro caso tendremos los siguientes modelos:

3
 csv
Es el modelo que se utiliza para la lectura de ficheros CSV
 excel
Es el modelo que se utiliza para la lectura de ficheros EXCEL (Utiliza el plugin
phpexcel de la carpeta plugins)
 files
Este modelo hace referencia a la subida de ficheros a nuestra aplicación desde un
formulario
 forms
Es el modelo que nos permite la generación de diferentes formularios
 mails
Genera correos electrónicos de diferente índole, por ejemplo, el alta de usuarios o
la recuperación de contraseñas.
 tables
El modelo que genera tablas de una forma rápida.

plugins

Este directorio contiene plugins realizados por terceros para la realización de diferentes cosas.
Por ejemplo: PDF, Excel, correos electrónicos, etc.

En nuestro caso tendremos los siguientes plugins por defecto:

 dompdf-0.8.0
Aplicación PHP para la realización de ficheros PDF
 phpexcel
Aplicación PHP para la realización de ficheros Microsoft Excel
 phpmailer
Aplicación PHP para el envío de correos electrónicos

rest

Contiene la clase referente a la lectura y escritura de API Rest Full para los datos enviados y
recibidos por JSON.

users

Contiene la clase referente a los usuarios de nuestra aplicación. Disponemos de una clase
usuario y de diferentes ficheros para cambiar la contraseña, cerrar sesión, recuperar
contraseña y el login.

views

La vista hace una presentación de los datos del modelo estando separada de los objetos del
modelo. Es responsable del uso de la información de la cual dispone para producir cualquier
interfaz de presentación de cualquier petición que se presente.

Por ejemplo, como la capa de modelo devuelve un conjunto de datos, la vista los usaría para
hacer una página HTML que los contenga.

La capa de la Vista no se limita únicamente a HTML o texto que represente los datos, sino que
puede ser utilizada para ofrecer una amplia variedad de formatos en función de sus

4
necesidades tales como videos, música, documentos y cualquier otro formato que puedas
imaginar.

En este directorio incorporaremos todo el código referente al HTML de nuestra aplicación.


Además, incorporaremos código PHP que realiza tareas para formar dicho HTML. Cabe
destacar que no contiene nada del controlador.

¿Dónde se encuentra la capa del Controlador?


La capa del controlador gestiona las peticiones de los usuarios. Es responsable de responder la
información solicitada con la ayuda tanto del modelo como de la vista.

Los controladores pueden ser vistos como administradores cuidando de que todos los recursos
necesarios para completar una tarea se deleguen a los trabajadores más adecuados. Espera
peticiones de los clientes, comprueba su validez de acuerdo con las normas de autenticación o
autorización, delega la búsqueda de datos al modelo y selecciona el tipo de respuesta más
adecuado según las preferencias del cliente. Finalmente delega este proceso de presentación a
la capa de la Vista.

NOTA: En SEINE el controlador o controladores se encuentran en el directorio raíz, es decir,


como fichero en la misma carpeta dónde se encuentra la carpeta SEINE.

El ciclo de una petición típica en SEINE comienza cuando un usuario solicita una página o un
recurso de tu aplicación. Esta solicitud es procesada por el servidor que realiza una petición a
una página PHP que es el controlador.

Una vez que la solicitud llega al controlador, éste se comunicará con la capa del Modelo para
cualquier proceso de captación de datos o el guardado de los mismos según se requiera. Una
vez finalizada esta comunicación el controlador procederá a delegar en el objeto de vista
correcto la tarea de generar una presentación resultante de los datos proporcionada por el
modelo.

Finalmente, cuando esta presentación se genera, se envía de inmediato al usuario.

Casi todas las solicitudes para la aplicación van a seguir este patrón básico.

Beneficios
¿Por qué utilizar MVC? Debido a que es un patrón de diseño de software verdaderamente
probado que convierte una aplicación en un paquete modular fácil de mantener y mejora la
rapidez del desarrollo. La separación de las tareas de tu aplicación en modelos, vistas y
controladores hace que su aplicación sea además muy ligera de entender. Las nuevas
características se añaden fácilmente y agregar cosas nuevas a código viejo se hace muy
sencillo. El diseño modular también permite a los desarrolladores y los diseñadores trabajar
simultáneamente, incluyendo la capacidad de hacer prototipos rápidos.

La separación también permite a los desarrolladores hacer cambios en una parte de la


aplicación sin afectar a los demás.

Si nunca has creado una aplicación de esta forma se necesita algún tiempo para
acostumbrarse, pero estamos seguros de que una vez que hayas terminado tu primera
aplicación con SEINE no vas a querer hacerlo de cualquier otra manera.

5
Modelos
El modelo representa la parte de la aplicación que implementa la lógica de negocio. Esto
significa que es responsable de la recuperación de datos convirtiéndolos en conceptos
significativos para la aplicación, así como su procesamiento, validación, asociación y cualquier
otra tarea relativa a la manipulación de dichos datos.

A primera vista los objetos del modelo pueden ser considerados como la primera capa de la
interacción con cualquier base de datos que podría estar utilizando tu aplicación. Pero en
general representan los principales conceptos en torno a los cuales se desea implementar un
programa.

El modelo CSV
Es el modelo que se utiliza para la lectura de ficheros CSV

Parámetros de entrada constructor de la clase CSV:

 $file_name
Ubicación del fichero
 $parse_header
Por defecto a false, quiere decir si el fichero CSV tiene una línea de cabecera
 $delimiter=";"
Por defecto “;”. El carácter de limitación de columna
 $length=8000
Por defecto 8000 líneas. El tamaño de lectura.

Parámetro de entrada clase get:

 $max_lines
Número máximo de líneas a leer.

Ejemplo:

$importer = new csv($carpeta.$fich, true, ";");


$data = $importer->get(2000);
//mirar el número de columnas

if(count(array_keys($data[0]))<=10)

//buscar id_vendor por la primera PO (siempre es el mismo para todo el fichero)

foreach($data as $linea)

//mete en el array el nombre de la cabecera por si hay espacios no de error

$keys = array_keys($linea);

6
echo $linea[$keys[0]]."', '".$linea[$keys[1]]."', '".$linea[$keys[2]]."', '".
$linea[$keys[3]]."', '".$linea[$keys[4]]."', '".$linea[$keys[5]]."', ".$linea[$keys[6]].", '".
$linea[$keys[7]]."', '".$linea[$keys[8]];

}//fin foreach

}//fin if

El modelo EXCEL
Es el modelo que se utiliza para la lectura de ficheros EXCEL (Utiliza el plugin phpexcel de la
carpeta plugins)

Parámetros de entrada clase EXCEL:

Parámetros de entrada método readExcel:

 $filename
Fichero a leer

Ejemplo:

$excel = new excel();


$data = $excel->readExcel("./imports/".$fich);

//la primera columna empieza en 12

$cont=1;
if($data[0]==1)
{

$error=0;
foreach($data[1] AS $row)
{

if($cont>=12 && $row["A"]=="")

break;

if($cont>=12)

echo '".$row["A"]."', '".$row["B"]."', '".$row["C"]."', '".$row["D"]."',


".strtotime($date).", '".$row["F"]."', ".$row["G"].", '".$row["H"]."',
".str_replace(",",".",$row["I"]).", ".str_replace(",",".",$row["J"]).", '".
$row["K"]."', '".$row["L"]."', '".$row["M"]."', '".$row["N"];

else
{

7
$error=1;
$ms_err.="El fichero subido no corresponde al tipo de archivo
seleccionado.<br>";

El modelo FILES
Este modelo hace referencia a la subida de ficheros a nuestra aplicación desde un formulario.

Parámetros de entrada clase files:

Método saveFile
Guarda un fichero en una carpeta dada con un nombre dado

Parámetros de entrada método saveFile:

 $filename
Nombre que hace referencia a la variable $_FILE del formulario enviado
 $uploaddir
Carpeta dónde se va a guardar el fichero
 $archivo
Nombre del archivo guardado
 $addDuplicate=true
Por defecto a true. Añadir marca de tiempo en el nombre del fichero

Ejemplo:

$fi=new files();

$fich = $fi->saveFile("fichero", $carpeta, $_FILES["fichero"]["name"], true);

echo “El nombre del fichero es: “.fich.”<br>”;

Método saveMultipleFile
Guarda un Array de ficheros en una carpeta dada con un nombre dado

Parámetros de entrada método saveMultiFile:

 $filename
Nombre que hace referencia a la variable $_FILE del formulario enviado
 $pos
La posición en el Array de archivos al que se hace referencia
 $uploaddir
Carpeta dónde se va a guardar el fichero
 $archivo
Nombre del archivo guardado
 $addDuplicate
Por defecto a true. Añadir marca de tiempo en el nombre del fichero
 $addExtension=true

Ejemplo:

8
if(isset($_FILES["fichero"]["name"]))

$total = count($_FILES['fichero']['name']);

if($total>0)

for($i=0 ; $i < $total ; $i++ )


{

$fi=new files();
$fich = $fi->saveMultiFile("fichero", $i, "./imports/", $_FILES["fichero"]
["name"][$i], false);

Echo “El nombre del fichero es: “.fich.”<br>”;

Método saveFileURL
Guarda un archivo de una URL en una carpeta dada con un nombre dado

Parámetros de entrada método saveFileURL:

 $url
La dirección URL dónde se encuentra el fichero a descargar
 $uploaddir
Carpeta dónde se va a guardar el fichero
 $archivo
Nombre del archivo guardado
 $addDuplicate=true
Por defecto a true. Añadir marca de tiempo en el nombre del fichero

Ejemplo:

$file=new files()
$imagen = $file->saveFileURL($input["url"], $carpeta, $input["id_product"], true);

El modelo MAILS
Genera correos electrónicos de diferente índole, por ejemplo, el alta de usuarios o la
recuperación de contraseñas.

Parámetros de entrada clase mails:

 $language
Por defecto “es”. Especifica el idioma del correo electrónico a enviar.

9
Método generateRecoveryMail
Genera y envía un correo electrónico con la contraseña si se desea.

Parámetros de entrada método generateRecoveryMail:

 $user
Nombre de usuario
 $password
Contraseña (sin encriptar)
 $send_password
Si se desea enviar la contraseña sin encriptar por correo electrónico.

Ejemplo:

$enviomail = new mails("es");


$enviomail->generateRecoveryMail($usuario->user, $contra, $recuperar_plano);

Método generateInvitationMail
Genera y envía un correo electrónico con de invitación a formar parte del sistema.

Parámetros de entrada método generateInvitationMail:

 $user
Nombre de usuario
 $password
Contraseña (sin encriptar)
 $send_password
Si se desea enviar la contraseña sin encriptar por correo electrónico.

Ejemplo:

$enviomail = new mails("es");


$enviomail->generateInvitationMail($_POST["user"], $code, true);

Método generateReinvitationMail
Genera y envía un correo electrónico con una reinvitación a un usuario ya registrado
anteriormente.

Parámetros de entrada método generateReinvitationMail:

 $user
Nombre de usuario

Ejemplo:

$enviomail = new mails("es");


$enviomail->generateReinvitationMail($_POST["user"]);

El modelo TABLES
Genera tablas de una forma rápida.

Parámetros de entrada clase table:

10
Método generateBasicTable
Genera una tabla básica sin paginación.

Parámetros de entrada método generateBasicTable:

 $rows
Array bidimensional que contiene todos los datos de la tabla, siendo la primera
posición la cabecera de la tabla.
 $id
Por defecto vacío. Es el id que hace referencia a la tabla
 $theadClass
Por defecto el estilo "thead-light". Hace referencia al la clase que llevará el th de la
cabecera
 $class
Por defecto “table”. Es la clase que hace referencia a la tabla
 $thScope
Por defecto “col”. Hace referencia al scope de la tabla.

Ejemplo:

$i=1;
$sql="select * from table where id like '".$_REQUEST["id"]."'";
$conexion = new conectaBD();
$res = $conexion->SqlQuery($sql);
if($res->rowCount()>0)
{
$arrayx[0][0]="Column 1";
$arrayx[0][1]="Column 2";
$arrayx[0][2]="Column 3";
while($row=$res->fetch())
{
$arrayx[$i][0]=$row["tbl_id"];
$arrayx[$i][1]=$row["tbl_return"];
$arrayx[$i][2]=$row["tbl_request"];
$i++;
}
$tbl=new table();
$tbl->generateBasicTable($arrayx, "idtable", " thead-light ", "table", "col");

Método generateCompleteTable
Genera una tabla básica sin paginación.

Parámetros de entrada método generateCompleteTable:

 $rows
Array bidimensional que contiene todos los datos de la tabla, siendo la primera
posición la cabecera de la tabla.
 $columnsSorted
Array con las columnas que se pueden ordenar
 $column
Por defecto -1 que quiere decir que ninguna ordenada. Columna a ordenar

11
 $sorted
Por defecto a vacío. Ordenación ascendente (asc) o descendente (desc) de la
columna ordenada
 $maxRegs,
Por derfecto -1 que quiere decir que se muestran todos los registros. Número
máximo de registros por página
 $page,
Por defecto 1. Página actual
 $show
Número de registros a mostrar en la paginación por delante y por detrás. Es decir,
si ponemos 2 y estamos en la página 5 mostrará en la paginación 3,4 y 6,7 después
del 5.
 $totalRegs
Número total de registros
 $search
Por defecto vacío. Cadena de búsqueda para el envío de la búsqueda en la
paginación
 $strGET,
Más parámetros de envío que se incorporarán a la URL de la paginación
 $id
Por defecto vacío. Es el id que hace referencia a la tabla
 $theadClass
Por defecto el estilo "thead-light". Hace referencia a la clase que llevará el th de la
cabecera
 $class
Por defecto “table”. Es la clase que hace referencia a la tabla
 $thScope
Por defecto “col”. Hace referencia al scope de la tabla.

Ejemplo:

$i=1;
$order="";
$search = "";
$searchstr = "";
$strGET = "";

if(isset($_GET["col"]) && isset($_GET["sor"]))


{

switch($_GET["col"])
{

case "0":

$order=" order by tbl_id ".$_GET["sor"];


$column=$_GET["col"];
$sorted=$_GET["sor"];

break;
case "1":

12
$order=" order by tbl_type ".$_GET["sor"];
$column=$_GET["col"];
$sorted=$_GET["sor"];

break;
case "4":

$order=" order by tbl_date ".$_GET["sor"];


$column=$_GET["col"];
$sorted=$_GET["sor"];

break;
default:

$order=" order by tbl_date ASC";


$column=1;
$sorted="ASC";

}
else
{

$column=-1;
$sorted="";
$order=" order by tbl_date ASC";

//paginación
$maxRegs = 25;
if(isset($_GET["pag"]))
{

$pagina = $_GET["pag"];
$inicio = ($pagina - 1) * $maxRegs;

}
else
{

$inicio = 0;
$pagina = 1;

//fin paginación
$conexion = new conectaBD();
if(isset($_REQUEST["src"]) && trim($_REQUEST["src"])!="")
{

$searchstr=trim($_REQUEST["src"]);
$search .= "and (tbl_id like '%".trim($_REQUEST["src"])."%' or tbl_type like
'%".trim($_REQUEST["src"])."%') ";

13
}

$sql="select * from table where 1=1 ".$search.$order;


$totalRegsRes = $conexion->SqlQuery($sql);
$totalRegs = $totalRegsRes->rowCount();
$sql.=" LIMIT ".$inicio.",".$maxRegs;

$arrayx[0][0]="ID";
$arrayx[0][1]="Tipo";
$arrayx[0][2]="Razón";
$arrayx[0][3]="Título";
$arrayx[0][4]="Fecha";
$arrayx[0][5]="Estado";
$arrayx[0][6]="Total";

$columnsSorted = array(

0 => true,
1 => true,
2 => false,
3 => false,
4 => true,
5 => false,
6 => false

);

$res = $conexion->SqlQuery($sql);
if($res->rowCount()>0)
{

while($row=$res->fetch())

$usu = new users();


$arrayx[$i][0]='<a href="javascript:void(0);" id="id_dis'.$row["tbl_id"].'"
class="disputa">'.$row["tbl_id"].'</a>';
$arrayx[$i][1]=$row["tbl_type"];
$arrayx[$i][2]=$row["tbl_reason"];
$arrayx[$i][3]=$row["tbl_title"];
$arrayx[$i][4]=date("d/m/Y", $row["tbl_date"]);
$arrayx[$i][5]=$row["tbl_status"];
$arrayx[$i][6]=number_format($row["tbl_amount"],2,",",".");
$i++;

14
if(isset($_REQUEST["src"]) && trim($_REQUEST["src"])!="")
{

echo '<p>Resultados para la búsqueda de: '.trim($_REQUEST["src"]).' <span


class="badge badge-pill badge-danger" style="width:24px !important; cursor:pointer;"
onclick="location.href=window.location.pathname"><i class="m-r-10 mdi mdi-
close"></i></span></p>';

$tbl=new table();
$tbl->generateCompleteTable($arrayx,$columnsSorted, $column, $sorted, $maxRegs, $pagina,
2, $totalRegs, $searchstr, $strGET, "dateTable");

Método generateBasicDataTable
Genera una tabla básica sin paginación y responsive.

Parámetros de entrada método generateBasicDataTable:

 $rows
Array bidimensional que contiene todos los datos de la tabla, siendo la primera
posición la cabecera de la tabla.
 $id
Por defecto vacío. Es el id que hace referencia a la tabla
 $theadClass
Por defecto el estilo "thead-light". Hace referencia a la clase que llevará el th de la
cabecera
 $class
Por defecto “table”. Es la clase que hace referencia a la tabla
 $thScope
Por defecto “col”. Hace referencia al scope de la tabla.
Por defecto “table”. Es la clase que hace referencia a la tabla

Ejemplo:

$i=1;

$sql="select * from table_det where id=".$_GET["id"];


$arrayx[0][0]="Column 1";
$arrayx[0][1]="Column 2";
$arrayx[0][2]="Column 3";
$arrayx[0][3]="Column 4";
$arrayx[0][4]="Column 5";

$res = $conexion->SqlQuery($sql);
if($res->rowCount()>0){
while($row=$res->fetch())
{

$arrayx[$i][0]=$ row["field1"];
$arrayx[$i][1]=$ row["field2"];

15
$arrayx[$i][2]=$ row["field3"];
$arrayx[$i][3]=$ row["field4"];
$arrayx[$i][4]=$ row["field5"];
$i++;
}
}
$tbl=new table();
$tbl->generateBasicDataTable($arrayx, "idtable", "thead-light", "table", "col");

El modelo FORM
Es el modelo que nos permite la generación de diferentes formularios.

Parámetros de entrada clase form:

Método generateFormLogin
Genera un formulario básico de login.

Parámetros de entrada método generateBasicDataTable:

 $n_user
Por defecto “usuario”. Es el name que se envía en el input de usuario
 $p_user
Por defecto “Email”. Es el placeholder que se muestra en el input de usuario
 $n_password
Por defecto “pass”. Es el name que se envía en el input de contraseña
 $p_password
Por defecto “Contraseña”. Es el placeholder que se muestra en el input de
contraseña
 $method
Por defecto “post”. Es el método de envío del formulario.
 $action
Por defecto “”. La URL de envío del formulario
 $class
Por defecto “form-horizontal m-t-20”. La clase de la etiqueta form
 $id
Por defecto “formulario”. El id del formulario
 $string_recover
Por defecto “Recuperar contraseña”. Texto que se muestra en el enlace de
recuperar contraseña
 $string_acc
Por defecto “Acceder”. Texto del botón de envío del formulario.
 $ms_err
Por defecto “Usuario y/o contraseña incorrectos.”. Texto que aparece al no
validarse correctamente.

Ejemplo:

$formlogin = new forms();


$formlogin->generateFormLogin();

16
Método generateFormRecover
Genera un formulario básico de recuperación de contraseña.

Parámetros de entrada método generateFormRecover:

 $n_user
Por defecto “usuariorecorvery”. Es el name que se envía en el input de usuario
 $p_user
Por defecto “Email”. Es el placeholder que se muestra en el input de usuario
 $method
Por defecto “post”. Es el método de envío del formulario.
 $action
Por defecto “”. La URL de envío del formulario
 $class
Por defecto “col-12”. La clase de la etiqueta form
 $id
Por defecto “formulario2”. El id del formulario
 $string_return
Por defecto “Volver a Inicio”. Es el texto del botón de volver al formulario login
 $string_acc
Por defecto “Enviar”. Texto del botón de envío del formulario.
 $ms_err
Por defecto “Usuario desconocido.”. Texto que aparece al no validarse
correctamente.
 $ms_sucess
Por defecto “Mensaje enviado, revise su correo electrónico.”.

Ejemplo:

$formrecover= new forms();


$ formrecover ->generateFormRecover();

Método generateFormChangePassword
Genera un formulario básico de login.

Parámetros de entrada método generateFormChangePassword:

 $n_password
Por defecto “pass”. Es el name que se envía en el input de contraseña
 $p_password
Por defecto “Contraseña”. Es el placeholder que se muestra en el input de
contraseña
 $n_password2
Por defecto “pass2”. Es el name que se envía en el input de confirmar contraseña
 $p_password2
Por defecto “Contraseña contraseña”. Es el placeholder que se muestra en el input
de confirmar contraseña
 $method
Por defecto “post”. Es el método de envío del formulario

17
 $action
Por defecto “”. La URL de envío del formulario
 $class
Por defecto “form-horizontal m-t-20”. La clase de la etiqueta form
 $id
Por defecto “formulario”. El id del formulario
 $string_acc
Por defecto “Cambiar”. Texto del botón de envío del formulario.
 $ms_err
Por defecto “Ha habido un error.”. Texto que aparece al no validarse
correctamente.

Ejemplo:

$formchangepass = new forms();


$ formchangepass ->generateFormChangePassword();

Método generateHeaderFormWizard
Genera una cabecera de un formulario por pasos.

Parámetros de entrada método generateHeaderFormWizard:

 $steps
Array con el nombre de los pasos
 $step_active
Posición del array activo
 $id="steps-uid-"
Por defecto “steps-uid-“.Es el id que se incorpora a cada uno de los pasos

Ejemplo:

$formwizard = new forms();


$steps[1]="Dirección/Datos";
$steps[2]="Detalle";
echo $formwizard->generateHeaderFormWizard($steps,1,"steps-uid-");

Ayuda para volver atrás en un formulario por pasos con JQuery:

$(".wizard2").click(function()
{

var getID = $(this).attr('id').replace('steps-uid-0-t-','');


window.location.href = "url.php?id=" + getID;

Método generateClassicFormArray
Genera la cabecera de un formulario clásico.

Parámetros de entrada método generateClassicFormArray:

 $method
Es el método de envío del formulario

18
 $action
La URL de envío del formulario
 $class
La clase de la etiqueta form
 $id
El id del formulario
 $string_acc
Por defecto “Enviar”. Texto del botón de envío del formulario.
 $ms_err
Texto que aparece al no validarse correctamente.
 $input_array
Array con los diferentes elementos que formarán el formulario

Método generateClassicHorizontalFormArray
Genera la cabecera de un formulario clásico horizontal.

Parámetros de entrada método generateClassicHorizontalFormArray:

 $method
Es el método de envío del formulario
 $action
La URL de envío del formulario
 $class
La clase de la etiqueta form
 $id
El id del formulario
 $string_acc
Por defecto “Enviar”. Texto del botón de envío del formulario.
 $ms_err
Texto que aparece al no validarse correctamente.
 $input_array
Array con los diferentes elementos que formarán el formulario

Método generateCodeClassicFormArray
Genera el código para los diferentes elementos enviados en un array.

Parámetros de entrada método generateCodeClassicFormArray:

 $input_array
Array con los diferentes elementos que formarán el formulario

Método generateCodeHorizontalClassicFormArray
Genera el código para los diferentes elementos enviados en un array.

Parámetros de entrada método generateCodeHorizontalClassicFormArray:

 $input_array
Array con los diferentes elementos que formarán el formulario

Ejemplo de un formulario completo:

19
$method = "post";
$action = "enviar.php”
$class="formulario";
$id="formulario";
$string_acc="Modificar";
$ms_err="Error";

$form = array
(

array(

"tag" => "input",


"type" => "text",
"name" => "nombre",
"id" => "nombre",
"class" => "form-control",
"placeholder" => "Nombre",
"error" => "",
"required" => "required",
"data" => "",
"value" => ""

),
array(

"tag" => "textarea",


"type" => "",
"name" => "direccion",
"id" => "direccion",
"class" => "form-control",
"placeholder" => "Dirección",
"error" => "",
"required" => "required",
"data" => "",
"value" => $row["address"]

),

array(

"tag" => "select",


"type" => "",
"name" => "pais",
"id" => "pais",
"class" => "select2 form-control custom-select",
"placeholder" => "País",
"error" => "",
"required" => "style='width: 100%; height:36px;'",
"data" => $wizard->generateSelectBD("paises", $row["country"]),
"value" => ""

20
),

array(

"tag" => "input",


"type" => "tel",
"name" => "telf",
"id" => "telf",
"class" => "form-control",
"placeholder" => "Teléfono",
"error" => "",
"required" => "required",
"data" => "",
"value" => $row["phone"]

),
array(

"tag" => "input",


"type" => "email",
"name" => "mail",
"id" => "mail",
"class" => "form-control",
"placeholder" => "Correo electrónico",
"error" => "",
"required" => "required",
"data" => "",
"value" => $row["email"]

);

echo $wizard->generateClassicFormArray($method, $action, $class, $id, $string_acc, $ms_err,


$form);

Elementos que se pueden enviar en el array de un formulario:


En los formularios existen varios elementos básicos de recolección de datos. Pueden ser desde
un cajetín de texto a una lista desplegable.

En SEINE para generar un elemento de formulario, es necesario cubrir los siguientes elementos
en el array enviado:

 tag
Indica el elemento queremos construir
 type
Indica el tipo de elemento a construir
 name
Es el name que se establece en el elemento
 id
Es el id que se establece en el elemento
 class

21
La clase del div que contiene el elemento
 placeholder
El placeholder que tendrá el elemento
 error
Error que saltará al cubrir mal dicho elemento (NO PROGRAMADO)
 required
Este elemento se escribe al final de la etiqueta del elemento del formulario, está
construida para definir si un elemento es requerido “required” o de solo lectura
“readonly”, pero al colocase al final, también permite opciones adicionales, como por
ejemplo definir un estilo “style=”
 data
Array de datos. Se usa para las listas o campos de chequeo/opción
 value
El valor por defecto que se establece en el elemento

A continuación, mostraremos una lista con los diferentes elementos y un ejemplo de cada uno
de ellos

Elemento input
Es un cajetín de texto dónde se pueden meter cualquier carácter

Ejemplo:

array(

"tag" => "input",


"type" => "text",
"name" => "contacto",
"id" => "contacto",
"class" => "form-control",
"placeholder" => "Nombre contacto",
"error" => "",
"required" => "required",
"data" => "",
"value" => $row["contact_name"]

Elemento decimal
Es un cajetín de texto dónde se pueden meter un número con dos decimales

Ejemplo:

array(

"tag" => "decimal",


"type" => "",
"name" => "peso",
"id" => "peso",
"class" => "form-control",
"placeholder" => "Peso",

22
"error" => "",
"required" => "required",
"data" => "",
"value" => "1"

Elemento hidden
Es un elemento oculto en un formulario

Ejemplo:

array(

"tag" => "hidden",


"type" => "hidden ",
"name" => " buscaren",
"id" => "buscaren ",
"class" => "",
"placeholder" => "",
"error" => "",
"required" => "",
"data" => "",
"value" => "blanco"

Elemento textarea
Es un cajetín de texto dónde podemos colocar saltos de línea

Ejemplo:

array(

"tag" => "textarea",


"type" => "",
"name" => "direccion",
"id" => "direccion",
"class" => "form-control",
"placeholder" => "Dirección",
"error" => "",
"required" => "",
"data" => "",
"value" => ""

Elemento radio
Elemento de única opción dentro de un conjunto de ellas.

Hay que tener en cuenta que el array pasado en el campo data tiene que estar formado por
posición:

1. valor

23
2. nombre
3. seleccionado

Ejemplo:

//creación del Array de opciones


$radio_placeholder_1 = array(

//array(value, name, selected)


array("1","Blanco","checked"),
array("2","Negro",""),
array("3","Color","")

);

array(

"tag" => " radio",


"type" => "radio",
"name" => "tipo",
"id" => "tipo",
"class" => "custom-control custom-radio",
"placeholder" => "",
"error" => "",
"required" => "required",
"data" => $radio_placeholder_1,
"value" => ""

Elemento checkbox
Elemento de varias opciones dentro de un conjunto de ellas.

Hay que tener en cuenta que el array pasado en el campo data tiene que estar formado por
posición:

1. valor
2. nombre
3. seleccionado

Ejemplo:

//creación del Array de opciones


$check_placeholder_1 = array(

//array(value, name, selected)


array("1","Realizado trabajo","checked"),

);

array(

"tag" => "checkbox",


"type" => "checkbox ",
"name" => "realizado",

24
"id" => "realizado",
"class" => "custom-control custom-checkbox",
"placeholder" => "",
"error" => "",
"required" => "required",
"data" => $check_placeholder_1 ,
"value" => ""

Elemento date
Es un cajetín de texto dónde podemos incorporar una fecha. Es dependiente de librerías
JQuery que se integran en SEINE

 CSS:
o <link rel="stylesheet" type="text/css" href="./assets/libs/bootstrap-
datepicker/dist/css/bootstrap-datepicker.min.css">
 JQuery
o <script src="./assets/libs/bootstrap-datepicker/dist/js/bootstrap-
datepicker.min.js"></script>
o <script src="./assets/libs/bootstrap-datepicker/dist/locales/bootstrap-
datepicker.es.min.js"></script>

También realizar la llamada por JQuery a las funciones

jQuery('#datepicker-autoclose').datepicker({

autoclose: true,
todayHighlight: true,
language: 'es'

});

Ejemplo:

array(

"tag" => "date",


"type" => "text",
"name" => "fecha",
"id" => "datepicker-autoclose",
"class" => "form-control",
"placeholder" => "Fecha",
"error" => "",
"required" => "",
"data" => "",
"value" => ""

Elemento separation
Genera una separación con un texto dado

Ejemplo:

25
array(

"tag" => "separation",


"type" => "",
"name" => "",
"id" => "",
"class" => "",
"placeholder" => "",
"error" => "",
"required" => "",
"data" => "",
"value" => ""

Elemento select
Genera una lista desplegable pasando un array en el data

Ejemplo:

array(

"tag" => "select",


"type" => "",
"name" => "id_transportista",
"id" => "id_transportista",
"class" => "form-control custom-select",
"placeholder" => "Transportista",
"error" => "",
"required" => "style='width: 100%; height:36px;'",
"data" => $form->generateSelectCustomBD("transportistas","activo=1",
$campos,"id_transportista",$id_transportista,"Medios propios","0"),
"value" => ""

Este elemento permite añadir un array en sus datos. SEINE provee una generación de campos
para los elementos select de forma automática. Para ello debemos disponer de un objeto form
para poder llamar al método de la clase.
Ejemplo:

$form = new forms();

Método generateSelectCustomBD
Genera el código para una lista de un formulario consultando una tabla de la base de datos.

Parámetros de entrada método generateSelectCustomBD:

 $tabla
El nombre de la tabla de la base de datos
 $condición
Condición para la consulta SQL

26
 $campos
Array con los campos mostrar
 $id_compare
Es el campo que se tiene que comparar con el valor del $id
 $id
Es el id del select que se va a poner como selected
 $default
Añade un nuevo elemento al principio de la lista
 $value_default
El valor que tiene el campo default

Ejemplo:

//array con los campos a mostrar (se pueden poner cuantos quieras)

$campos[0]="nombre";

array(

"tag" => "select",


"type" => "",
"name" => "id_transportista",
"id" => "id_transportista",
"class" => "form-control custom-select",
"placeholder" => "Transportista",
"error" => "",
"required" => "style='width: 100%; height:36px;'",
"data" => $form->generateSelectCustomBD("transportistas","activo=1",
$campos,"id_transportista",$id_transportista,"Medios propios","0"),
"value" => ""

Método generateSelectBD
En la base de datos por defecto de SEINE, existe una tabla llamada listados_app que su función
principal es la de tener listados que no necesitan de una tabla en la base de datos.

Parámetros de entrada método generateSelectBD:

 $tabla
El nombre de la tabla de la base de datos
 $id
Es el id del select que se va a poner como selected

Ejemplo:

array(

"tag" => "select",


"type" => "",
"name" => "pais",
"id" => "pais ",

27
"class" => "select2 form-control custom-select ",
"placeholder" => "País",
"error" => "",
"required" => "style='width: 100%; height:36px;'",
"data" => $form->generateSelectBD("paises", 0)
"value" => ""

PLUGINS
SEINE proporciona una serie de plugins preinstalados para facilitar el desarrollo de
aplicaciones.

SEINE dispone de sus propios plugins, y estos se encuentran en la carpeta plugins. El tema que
trae por defecto SEINE, también incorpora plugins a nivel de código JQuery.

Primero explicaremos los plugings del tema preinstalado y seguidamente de los que incorpora
SEINE.

Plugin Mask
Se trata de un plugin de tema y nos facilita la inclusión de máscaras en campos de texto.

Para que esto función debemos incorporar el JQuery correspondiente:

 JQuery
o <script
src="./assets/libs/inputmask/dist/min/jquery.inputmask.bundle.min.js"></scri
pt>
o <script src="./dist/js/pages/mask/mask.init.js"></script>

Para añadir una nueva máscara debemos acceder al fichero “dist/js/pages/mask/ mask.init.js”
y allí podremos añadir una nueva máscara

Ejemplo:

Este ejemplo creará una máscara a nuestro campo de texto con la clase “fra-inputmask” dónde
a es cualquier letra y 9 es cualquier número. Los guiones (-) saldrán por defecto

$(".fra-inputmask").inputmask("aa-a99-aa-9999")

Plugin dompdf-0.8.0
Se trata de un plugin externo para realizar archivos PDF. Tiene el inconveniente de que no
permite la inclusión de ficheros externos CSS.

Toda la documentación sobre este plugin se encuentra en:


https://github.com/dompdf/dompdf/releases

Ejemplo:

include_once("SEINE/plugins/dompdf-0.8.0/autoload.inc.php");
use Dompdf\Dompdf;
$dompdf = new Dompdf();

28
$dompdf->loadHtml(' <html><body>Prueba PDF</body></html>');
// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
//$dompdf->stream();
$dompdf->stream();
$pdf_gen = $dompdf->output();

Plugin phpexcel
Se trata de un plugin externo para realizar archivos Excel, tanto lectura como escritura. La
lectura en SEINE se realiza con la clase “excel”.

Toda la documentación sobre este plugin se encuentra en: https://medium.com/matrix-


developments/php-excel-una-ligera-alternatva-para-phpexcel-f18623356c91

Plugin phpmailer
Se trata de un plugin externo para realizar envíos de correos electrónicos. El envío de correos
electrónicos en SEINE se realiza con la clase “mails”.

Toda la documentación sobre este plugin se encuentra en:


https://github.com/PHPMailer/PHPMailer/releases

<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Licencia


Creative Commons" style="border-width:0"
src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />Esta obra está bajo una
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Licencia Creative
Commons Atribución 4.0 Internacional</a>.

29

Вам также может понравиться