Академический Документы
Профессиональный Документы
Культура Документы
QCODO
ÍNDICE
1. INTRODUCCIÓN………………………………………………………………… 5
2. CONFIGURACIÓN………………………………………………………………. 5
4. EJEMPLO COMPLETO…………………………………………………………. 8
5. AÑADIR FUNCIONALIDAD…………………………………………………….. 13
6. DISEÑO DE LA APLICACIÓN………………………………………………….. 20
Tutorial Qcodo
1. INTRODUCCIÓN
http://www.qcodo.com/
2. CONFIGURACIÓN
5
Tutorial CakePHP
6
Tutorial CakePHP
7
Tutorial CakePHP
Qforms.
Qforms permite mantener la lógica por un lado y el diseño por otro. Una ventaja
que tiene este framework es que la lógica y la presentación están dentro de una
arquitectura que maneja los formularios, control y estado de la web, ofrece una
plataforma separada para desarrolladores, así pueden escribir controles. Con
ellos conseguimos menos código repetido y controles que pueden ser agrupados
dentro de las clases separadas.
4. EJEMPLO COMPLETO
8
Tutorial CakePHP
Primer paso.
ENGINE=InnoDB;
Figura 7. Tablas relacionadas de muchos a muchos
Crear las tablas en la base de datos MySQL, la cual se hace mediante el motor de
almacenamiento de InnoDB, ya que con MyISAM no funcionarían las relaciones
9
Tutorial CakePHP
entre las tablas. Los campos que son clave primaria se identifican con “id”. Estas
se identifican escribiendo la siguiente línea.
También habría que indicarle el campo que se quiera ver, por ejemplo en la tabla
‘libro’ se quiere ver el campo ‘nombre’ de la tabla ‘autor’.
KEY IDX_autor_1(nombre)
KEY IDX_libro_2(autor_id),
Segundo paso
10
Tutorial CakePHP
relacionadas y las relaciones entre ella, por ejemplo al mirar esta figura se
ve como en la tabla libros hay 5 tablas relacionadas, mientras que en la
tabla editorial no tiene ninguna relación. En el caso que algo no hubiera
funcionado correctamente saldría un mensaje de error.
11
Tutorial CakePHP
la que estamos, con los datos de las fila que se quieran cambiar, donde
cambiará los datos, los guardará, cancelará o borrará (figura 12).
12
Tutorial CakePHP
5. AÑADIR FUNCIONALIDAD
Para entenderlo mejor se hará un ejemplo con la tabla Autor. Dentro de la carpeta
‘[…]/proyecto_qcodo/includes/data_classes’., se abrirá el archivo ‘autor.class.php’,
donde aparecerá la función, ‘function __toString(),‘ como se muestra en la figura
13. Dentro de ella hay un ‘sprintf’ en la que aparece ‘Autor Object’ que es lo que
aparecía en la tabla antes del nombre, p.e ‘Autor Object Marta’, como preferimos
que salga el nombre solo, pues se quitará ‘Autor Object’. Luego también se
cambiará ‘intId’, ahora no queremos que aparezca un ‘entero’ sino un ‘string’, por
13
Tutorial CakePHP
Esto que se ha realizado sobre la tabla ‘autor’, habrá que hacerlo en todas las
tablas que tengan un campo relacionado con otra tabla, así como en la tabla
‘libro’, donde se dirá que el objeto sea el ‘titulo’ del libro. Quedando las tablas
como aparecen en la figura 15. Donde en la tabla autor aparecen los títulos de los
libros en vez de los objetos.
14
Tutorial CakePHP
15
Tutorial CakePHP
‘[…]/proyecto_qcodo/form_drafts/generated/Usuario_edit.tpl.php’.
Pero la parte del diseño es generada por QCodo, por tanto se debe mover el
archivo de la carpeta ‘[…]/proyecto_qcodo/form_drafts/generated’ a la carpeta
[…]/proyecto_qcodo/form_drafts’, quedando así (de no mover el archivo de
carpeta se volvería a regenerar el código borrando los cambios realizados):
UsuarioEditForm::Run('UsuarioEditForm','usuario_edit.tpl.php')
Hasta ahora solo se han creado dos campos (password, password2), ahora se
validarán para que en los dos campos tengan los mismos valores. Para ello se
añadirá una pequeña función en ‘usuario_edit.php’ (en la parte lógica), con el fin
16
Tutorial CakePHP
que al darle al botón ‘save’ (guardar), compruebe que en ambos campos hayan
los mismos valores. En la figura 17 se mostrará el código.
Una vez hecho todo esto, en la Figura 18, se pueden leer las contraseñas, esto es
un error, ya que las contraseñas deben aparecer con caracteres. Entonces habría
que hacerlo con objetos. Por ello el objeto del campo password es QTextBox, y
sobre éste se pueden agregar colores, estilos CSS, posiciones, etc. Y también
estilos al password. QtextBox tiene una propiedad llamada TextMode. Esta
propiedad coge los objetos como valores válidos, y estos valores son:
17
Tutorial CakePHP
Para cambiar el valor por defecto de QtextMode a Password solo hay que
escribirlo como muestro en la figura 19.
$this->txtPassword2->MaxLength = Usuario::PasswordMaxLength;
$this->txtPassword2->TextMode = QTextMode::Password;
$this->txtPassword->TextMode = QTextMode::Password;
Figura 19. Cambia las propiedades de QTextMode
ENCRIPTAR
Sin embargo tal como está ahora mismo si se selecciona sobre ‘guardar/editar’,
pierde los caracteres y salen las letras, es decir la contraseña sin encriptar, por
ello, lo primero que se hará será crear una variable nueva
18
Tutorial CakePHP
if ($this->oldPassword != $this->txtPassword->Text){
$this->txtPassword->Text = sha1($this->txtPassword->Text);
$this->oldPassword = $this->txtPassword->Text;
}
Figura 22. Encriptar contraseñas
TRADUCCIÓN DE ETIQUETAS.
En este framework todas las etiquetas están en inglés, etiquetas como: delete
(borrar), create (crear), next (siguiente), previous (anterior). Para traducirlas a
cualquier idioma, Qcodo ha creado hojas en las que traduce cada etiqueta a cada
idioma, pero aún así es una labor un poco lenta, ya que hay que ir a la hoja
“es.po”, situada en la carpeta ‘[…]/proyecto_qcodo/includes/qcodo/_core/i18n’ y
mirar cada etiqueta, una por una, ir buscando la dirección e ir traduciéndolas.
Haciendo todo ello solo se cambian algunas etiquetas. Para cambiarlas todas, hay
que ir, clase por clase, revisando cada etiqueta, así como en cada archivo
generado por los formularios creados (la parte lógica y la de diseño para editar el
autor, la parte lógica y la de diseño para el listado del autor, etc.).
19
Tutorial CakePHP
los títulos de las tablas, ya que cuando genera los listados, Qcodo escribe el
nombre de la tabla en plural (plural inglés), por esa razón escribe Autors, en vez
de Autores (en éstas no está la función template, pero si se puede quitar el código
y ponerlo como queramos). El resto de palabras como: ‘listado de’, ‘Resultados’,
‘Anterior’, ‘Siguiente’, ‘Crear autor’ e ‘Ir a modelos de formularios’, están en
castellano.
6. DISEÑO DE LA APLICACIÓN
Una vez creados la aplicación, se cambiarán todas las vistas, para ello se va a
crear una carpeta nueva dentro de ‘[…]/proyecto_qcodo/vista1’, que contenga tres
páginas: index.php, header.inc y footer.inc, con el único propósito de ahorrar
código. A partir de ahora, todos los archivos que se creen en Qcodo deben tener
la siguiente forma:
<?include "header.inc";?>
CONTENIDO
<?include "footer.inc";?>
Figura 25. Incluir header y footer a cada archivo
• header.php: este archivo será la cabecera de las páginas Web creadas, por
tanto en el se pueden aplicarán estilos CSS así como imágenes.
<?php
require('../includes/prepend.inc.php');
...
Figura 26. Todos los archivos deben llamar a la función ‘prepend.inc.php’
20
Tutorial CakePHP
<html>
<head>
<title>Time Track demo using QCodo</title>
<style>
TD, BODY{font: 12px <?php echo QFontFamily::Verdana; ?>; }
.title{font: 30px <?php echo QFontFamily::Verdana; ?>; font-weight: bold;
margin-left:-2px;}
.title_action{font: 12px <?php echo QFontFamily::Verdana;?>;
font-weight: bold; marginbottom:-4px;}
.item_divider{line-height: 16px;}
.heading{font: 16px <?php echo QFontFamily::Verdana;?>; font-weight: bold;}
</style>
</head><body>
<div class="title_action">Time Track demo using QCodo</div>
<ul>
<?include "menu.inc";?>
</ul>
Figura 27. Incluir estilos CSS y el menú
<a href="form_drafts/libro_list.php">Libro</a> |
<a href="form_drafts/autor_list.php">Autor</a> |
Figura 28. Incluir enlaces en Qcodo
...</body>
</html>
Figura 29. Cerrar etiquetas
21
Tutorial CakePHP
Página principal lleva los cinco botones para acceder a las cinco tablas, estos
botones forman parte de la cabecera, por tanto si creáramos más tablas solo se
tendría que modificar los cambios en la cabecera, afectando así a toda la
aplicación. Esta página quedaría como en la figura 32 y 33.
Formulario libro, en ella aparece la lista de libros donde se puede ver, editar o
crear libros (figura 34). Al darle a ‘libro’ saldrá otro formulario donde se han creado
los siguientes campos: título, número de páginas, y tres listbox, con los que se
22
Tutorial CakePHP
puede enlazar el libro con un autor, un tema y una editorial. Pero como la tabla
libro tiene una relación N:N con las tablas tema y autor, pues también aparecerán
dos textarea para que puedan ver/modificar/crear más temas o autores por cada
libro, tal como se muestra en la figura 35.
Cuando Qcodo genera las listas de cualquier tabla, como puede ser la de libro,
genera una primera fila donde se ven todos los alumnos que hay (en la figura 34
indica que hay 11 artículos). En cada tabla hay 10 filas y en la parte superior
indica las páginas que hay, en esta tabla hay 2 páginas. Todo ello se puede
modificar o cambiar.
23
Tutorial CakePHP
Si se observa la figura 34, se puede ver como las filas están ordenadas por el
identificador (id), pero se podría ordenar por cualquier otra columna, solo con
pulsar encima de la columna que queramos ordenar, como puede ser nombre,
apellido, fecha de nacimiento o fecha de defunción.
24
Tutorial CakePHP
<?php
require('../includes/prepend.inc.php');
<html>
<head>
<title>Primer Ejemplo</title>
</head>
<body>
25
Tutorial CakePHP
</body>
</html>
Figura 6. Ejemplo1.tpl.php
Figura 6. Ejemplo1.tpl.php
En el ejemplo anterior se pretende conseguir una función en la que por cada vez
que se pulse sobre ‘pulse aquí’, incrementará el número que hay en la parte
superior del botón.
<?php $this->RenderBegin();?>
<?php $this->RenderEnd();?>
26
Tutorial CakePHP
27