Diferencia entre revisiones de «KumbiaPHP Framework Versión 1.0 Beta2»
Línea 708: | Línea 708: | ||
==== setExtensions() ==== | ==== setExtensions() ==== | ||
− | Indica | + | Indica las extensiones de archivos permitidas. |
<pre> | <pre> |
Revisión del 01:29 21 may 2010
Documentación de KumbiaPHP 1.0 beta2
Sumario
- 1 Migrando de la versión 1.0 Beta1 a Beta2
- 2 Helpers
- 2.1 Clase Html
- 2.2 Clase Tag
- 2.3 Clase Form
- 2.3.1 Form::open()
- 2.3.2 Form::openMultipart()
- 2.3.3 Form::close()
- 2.3.4 Form::input()
- 2.3.5 Form::text()
- 2.3.6 Form::pass()
- 2.3.7 Form::textarea()
- 2.3.8 Form::label()
- 2.3.9 Form::hidden()
- 2.3.10 Form::dbSelect()
- 2.3.11 Form::select()
- 2.3.12 Form::file()
- 2.3.13 Form::button()
- 2.3.14 Form::submitImage()
- 2.3.15 Form::submit()
- 2.3.16 Form::reset()
- 2.3.17 Form::check()
- 2.3.18 Form::radio()
- 3 Libreria Upload
Migrando de la versión 1.0 Beta1 a Beta2
La versión 1.0 beta2 trae consigo correcciones y mejoras, nuevos helpers, clases y extensiones que facilitaran aun mas el trabajo.
Para realizar la migración de la versión 1.0beta1 a la versión 1.0beta2 solamente hay que tener presentes los cambios que se han realizado en cuanto a funcionamiento, la inclusión de nuevos helpers para las vistas y controllers.
Recordemos que todo lo que se incluye es con el fin de facilitar la curva de aprendizaje, la forma de trabajo y de poseer un framework con una semántica mucho mayor, claro esta que sigue sin perder su cualidades mvc y de scaffolding
Autoload libs (Nuevo)
En la versión 1.0 beta 2 las librerías se cargan automáticamente, siempre y cuando se encuentren en el directorio correspondiente “app/libs”, de igual modo se cargan las extensiones automáticamente “extensions/” y los helpers “helpers/”. Por esta razón el archivo “/config/boot.ini” ya no se usa en la versión 1.0 beta2
Como se usa
Como verán se omite la carga de librerías y se crea directamente el objeto
Versión 1.0 beta 1
Load::lib('session');
$var = Session::get('var');
Versión 1.0 beta 2
$var = Session::get('var');
¿Que debo cambiar?
Si se tiene una APP con la versión 1.0 beta1, solamente debe eliminar (ya que no sera necesario) el archivo “/config/boot.ini” la carga de librerías que se realizaba mediante load::lib(); ya no es necesaria, así que estas también se pueden borrar. En resumen: eliminar todas las cargas de librerías que se hagan mediante load::lib(); y boot.ini
El Controlador principal cambio de nombre
Dentro de los cambios que encontraremos en las versiones beta 1 y beta 2 estar el cambio de nombre del archivo application.php por application_controller.php el cual mantendrá la funcionalidad, solo cambia el nombre del archivo que sigue siendo el controller principal
¿porque se cambio? simple, es un controller y al igual que los demás debe llevar el sufijo _controller que identifica los controladores de kumbiaphp
Nuevo árbol de directorios
Anteriormente los partials, templates y errors se almacenaban en 'app/views/' a pesar de que no eran vistas, debido a eso se creo el directorio '_shared' y se movió todo lo que no son vistas allí.
_shared es el directorio 'app/views/_shared' que ahora almacena partials, templates y errors
Así que en nuestra migración debemos mover los archivos correspondientes a dichos directorios Ejemplo: 'app/views/partials/menu.phtml' pasara al directorio 'app/views/_shared/partials/menu.phtml' (pueden ver el ejemplo básico dentro de su app con el partial footer.phtml que se encuentra en dicho directorio)
Helpers
Clase Html
Clase con métodos estáticos con la que podemos crear etiquetas HTML optimizadas respetando las convenciones de KumbiaPHP.
Html::img()
Permite incluir una imagen
$src ruta de la imagen $alt atruibuto alt para la imagen $attrs atributos adicionales img ($src, $alt=NULL, $attrs = NULL)
/*Ejemplo*/
echo Html::img('spin.gif','una imagen'); //se muestra la imagen spin.gif que se encuentra dentro de "/public/img/"
//con el artibuto alt 'una imagen'
Html::link()
Permite incluir un link
$action ruta a la accion $text texto a mostrar $attrs atributos adicionales link ($action, $text, $attrs = NULL)
/*Ejemplo*/
echo Html::link('pages/show/kumbia/status','Configuracion'); //se muestra un link con el texto 'Configuracion'
Html::lists()
Crea una lista html a partir de un array
$array contenido de la lista $type por defecto ul, y si no ol $attrs atributos adicionales lists($array, $type = 'ul', $attrs = NULL)
/*Ejemplo*/
$ar = array('Abdomen' => 'Abdomen',
'Brazos' => 'Brazos',
'Cabeza' => 'Cabeza',
'Cuello' => 'Cuello',
'Genitales' => 'Genitales',
'Piernas' => 'Piernas',
'Tórax' => 'Tórax',
'Otros' => 'Otros');
//$ar el array que contiene los items de la lista
echo Html::lists($ar, $type = 'ol'); //Muestra una lista <ol></ol>
$ar2 = array('Abdomen','Brazos','Cabeza','Cuello','Genitales','Piernas','Tórax','Otros');
echo Html::lists($ar2, $type = 'ol'); //Muestra una lista <ol></ol>
Html::includeCss()
Incluye los archivos CSS que previamente fueron cargados a la lista mediante Tag::css()
Tag::css('bienvenida'); //Pone en lista un CSS (app/public/css/bienvenida.css)
echo Html::includeCss(); //Adiciona los recursos enlazados de la clase en el proyecto
Html::meta()
Crea un metatag y lo agrega a una lista estatica que sera añadida mas adelnate mediante Html::includeMetatags();
$content contenido del metatag $attrs atributos adicionales del tag meta($content, $attrs = NULL)
Html::meta('Kumbiaphp-team',"name = 'Author'"); //Agrega: <meta content="Kumbiaphp-team" name = 'Author'/>
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'"); //Agrega: <meta content="text/html; charset=UTF-8" http-equiv = 'Content-type'/>
Html::includeMetatags()
Agrega los metatag que previamente se habia agregado
Html::meta('Kumbiaphp-team',"name = 'Author'");
charset=UTF-8" http-equiv = 'Content-type'/>
echo Html::includeMetatags(); //Visualiza <meta content="Kumbiaphp-team" name = 'Author'/>
Html::headLink()
Agrega un elemento de vinculo externo de tipo <link> a la cola de enlaces (para poder ser visualizado se requiere de Html::includeHeadLinks() de modo similar que Html::includeCss())
$href direccion url del recurso a enlazar $attrs atributos adicionales headLink($href, $attrs = NULL)
Html::headlink('http://www.kumbiaphp.com/public/style.css',"rel='stylesheet',type='text/css' media='screen'"); //Se agrega a la cola de links el enlace a un recurso externo, en este caso la hoja de estilo ubicada en "http://www.kumbiaphp.com/public/style.css"
/*Agrega a la cola de links "<link rel="alternate" type="application/rss+xml" title="KumbiaPHP Framework RSS Feed" href="http://www.kumbiaphp.com/blog/feed/" />" con lo cual podemos incluir un feed sin usar las convenciones de kumbiaphp */
Html::headlink('http://www.kumbiaphp.com/blog/feed/',"rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");
Html::headlink('http://www.kumbiaphp.com/favicon.ico',"rel='shortcut icon',type='image/x-icon'"); //Agrega la etiqueta <link> para usar un favicon externo
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola
Html::headLinkAction()
Agrega un elemento de vinculo interno de tipo <link> a la cola de enlaces (para poder ser visualizado se requiere de Html::includeHeadLinks() de modo similar que Html::includeCss()) respetando las convenciones de kumbiaphp
$href direccion url del recurso a enlazar $attrs atributos adicionales headLinkAction($action, $attrs = NULL)
/*Agrega a la cola de links "<link rel="alternate" type="application/rss+xml" title="KumbiaPHP Framework RSS Feed" href="http://www.kumbiaphp.com/blog/feed/" />" con lo cual podemos incluir un feed usando las convenciones de kumbiaphp.
Siendo 'articulos/feed' el nombre de la vista con el contenido del feed */
Html::headLinkAction('articulos/feed', "rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola
Html::headLinkResource()
Agrega un elemento de vinculo a un recurso interno con la etiqueta <link> a la cola de enlaces (para poder ser visualizado se requiere de Html::includeHeadLinks())
$resource ubicacion del recurso en public $attrs atributos adicionales headLinkResource($resource, $attrs = NULL)
Html::headLinkResource('favicon.ico',"rel='shortcut icon',type='image/x-icon'"); //Agrega la etiqueta <link> para usar un favicon interno ubicado en el directorio '/public/'
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola
Html::includeHeadLinks()
Incluye los links que previamente se pusieron en cola
Html::headlink('http://www.kumbiaphp.com/favicon.ico',"rel='shortcut icon',type='image/x-icon'"); //Agrega la etiqueta <link> para usar un favicon externo
Html::headLinkAction('articulos/feed', "rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");
echo Html::includeHeadLinks();
Clase Tag
Esta clase nos va a permitir adicionar archivos JS y CSS a nuestro proyecto (como lo hacíamos con las funciones stylesheet_link_tag y javascript_include_tag de la Beta1), bien sean archivos que se encuentren en nuestro servidor o en un servidor externo. Tambien vamos a poder hacer
Las funciones de esta clase son de tipo static lo que nos permite referenciarlas directamente de la forma como se presentan a continuación.
Tag::css()
Incluye un archivo CSS a la lista
Tag::css('bienvenida'); //Pone en lista un CSS (app/public/css/bienvenida.css)
echo Html::includeCss(); //Adiciona los recursos enlazados de la clase en el proyecto
Tag::js()
Incluye un archivo JavaScript a la vista, partial o template
<?php echo Tag::js('jquery/jquery.kumbiaphp');?> //Adiciona un archivo javascript (app/public/javascript/jquery/jquery.kumbiaphp)
Clase Form
Clase para el manejo y la creación de formularios
Form::open()
Crea una etiqueta de formulario
$action acción a la que envía los datos, por defecto llama la misma acción de donde proviene $method 'POST', 'GET', 'DELETE', 'HEAD', 'PUT'. Por defecto se tiene en 'POST' $attrs atributos adicionales Form::open($action = NULL, $method = 'POST', $attrs = NULL)
/*Ejemplo*/
<?php echo Form::open(); ?>//inicia un formulario que enviara los datos a la acción que corresponde al controller actual
<?php echo Form::open('usuarios/nuevo'); ?> //inicia un formulario que enviara los datos al controller 'usuarios' y la acción 'nuevo'
Form::openMultipart()
Crea una etiqueta de formulario multipart, este es ideal para formularios que contienen campos de subida de archivos
$action acción a la que envía los datos, por defecto llama la misma acción de donde proviene $attrs atributos adicionales openMultipart ($action = NULL, $attrs = NULL)
/*Ejemplo*/
echo Form::openMultipart();//inicia un formulario multipart que enviara los datos a la acción que corresponde a la vista actual
echo Form::openMultipart('usuarios/nuevo');//inicia un formulario multipart que enviara los datos al controller 'usuario' y la acción 'nuevo'
Form::close()
Crea una etiqueta de cierre de formulario
/*Ejemplo*/
echo Form::close();//crea una etiqueta de cierre de formulario </form>
Form::input()
Crea un campo de tipo input
$attrs atributos para el tag $content contenido interno input($attrs = NULL, $content = NULL)
/*Ejemplo*/
echo Form::input('nombre');
Form::text()
Crea un campo de tipo input
Siempre que se le da el parmetro name de la forma model.campo, es decir un nombre que contenga un punto dentro del string, se crea el campo de texto con el name= "model[campo]" y el id="model.campo" (en la version 1.0 beta 1 se cambiaba por id="model_campo")
$field Nombre de campo $attrs atributos de campo $value valor inicial para el input text($field, $attrs = NULL, $value = NULL)
/*Ejemplo*/
echo Form::text('nombre'); //crea un campo de tipo texto con el parametro name= "nombre", id = "nombre"
echo Form::text('usuario.nombre'); //crea un campo de tipo texto con el parametro name= "usuario[nombre]", id = "usuario.nombre"
echo Form::text('nombre',"class= 'caja'",'55'); //crea un campo de tipo texto con el parametro name= "nombre", id = "nombre", class= "caja", value = "55"
Form::pass()
Crea un campo de tipo Password
$field nombre de campo $attrs atributos de campo $value valor inicial para el campo pass($field, $attrs = NULL, $value = NULL)
/*Ejemplo*/
echo Form::pass('password'); //crea un campo de tipo password con el parametro name= "password"
Form::textarea()
Crea un textarea
$field nombre de campo $attrs atributos de campo $value valor inicial para el textarea textarea($field, $attrs = NULL, $value = NULL)
echo Form::textarea('detalles'); //Crea un textarea
Form::label()
Crea un label y lo asocia a un campo
$text texto a mostrar $field campo al que hace referencia $attrs array de atributos opcionales label($text, $field, $attrs = NULL)
echo Form::label('nombre de usuario:','nombre'); //Crea un label para el campo nombre con el texto 'nombre de usuario:'
echo Form::text('nombre');
Crea un campo hidden (campo oculto)
$field nombre de campo $attrs atributos adicionales de campo $value valor inicial para el campo oculto hidden($field, $attrs = NULL, $value = NULL)
echo Form::hidden('id',null,12); //Crea un campo oculto con el name="id" y el value="12"
Form::dbSelect()
Crea campo Select que toma los valores de un array de objetos de ActiveRecord
$field nombre de campo $data array de valores para la lista desplegable $show campo que se mostrara $blank campo en blanco $attrs atributos de campo $value valor inicial para el campo oculto dbSelect($field, $data, $show, $blank = NULL, $attrs = NULL, $value = NULL)
Controlador
$usuarios = new Usuarios();
$this->usuarios = $usuarios->find();
Vista
echo Form::dbSelect('usuarios.id', $usuarios, 'nombres', '- seleccione -');
Form::select()
Crea un campo Select (un combobox)
$field nombre de campo $data array de valores para la lista desplegable $attrs atributos de campo $value valor inicial para el campo select($field, $data, $attrs = NULL, $value = NULL)
$ar2 = array('Abdomen','Brazos','Cabeza','Cuello','Genitales','Piernas','Tórax','Otros');
echo Form::Select('region', $ar2,'Cuello'); //Crea un campo Select (un combobox) con el nombre 'region' y teniendo preseleccionado 'Cuello'
Form::file()
Crea campo File para subir archivos, el formulario se debe abrir con Form::openMultipart()
$field nombre de campo $attrs atributos de campo file($field, $attrs = NULL)
echo Form::openMultipart(); //Abre el formulario multipart
echo Form::file('subir'); crear el campo para subir archivos
echo Form::close(); //Cierra el formulario
Form::button()
Crea un botón
$text texto del botón $attrs atributos del botón button($text, $attrs = NULL)
echo Form::button('calcular'); //Crea un botón con el texto 'calcular'
Form::submitImage()
Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen devera estar dentro del directorio '/public/img/'
$img ruta de la imagen que usa el botón $attrs atributos del botón submitImage($img, $attrs = NULL)
echo Form::submitImage('botones/edit.gif'); //Crea un botón con la imagen 'botones/edit.gif'
Form::submit()
Crea un boton de submit para el formulario actual
$text texto del botón $attrs atributos del botón submit($text, $attrs = NULL)
echo Form::submit('enviar'); //Crea un botón con el texto 'enviar'
Form::reset()
Crea un botón reset para el formulario actual
$text texto del botón $attrs atributos del botón reset($text, $attrs = NULL)
echo Form::reset('reiniciar'); //Crea un botón con el texto 'reiniciar'
Form::check()
Crea un checkbox
$field nombre de campo $value valor en el checkbox $attrs atributos de campo $checked indica si se marca el campo check($field, $value, $attrs = NULL, $checked = NULL)
echo Form::check('recuerdame','1','',true); // Crea un check seleccionado con id="recuerdame" , name="recuerdame" y value="1"
echo Form::check('recuerdame','1','',false); // Crea un check NO seleccionado con id="recuerdame" , name="recuerdame" y value="1"
Form::radio()
Crea un radio button
$field nombre de campo $value valor en el radio $attrs atributos de campo $checked indica si se marca el campo radio($field, $value, $attrs = NULL, $checked = NULL)
$on = 'masculino';
echo Form::radio("rdo", 'masculino', $on); //<input id="rdo1" name="rdo" type="radio" value="masculino" checked="checked">
echo Form::radio("rdo", 'femenino', $on); //<input id="rdo2" name="rdo" type="radio" value="femenino">
Por supuesto... aun falta a esta documentación, por el momento les recomiendo que revisen el CRUD de la versión 1.0 beta 2 allí podrán ver otros cambios, estos se documentaran muy pronto CRUD Beta2 KumbiaPHP
Libreria Upload
La nueva implementación de Upload incluye ahora mayor seguridad y facilidad de uso. Existen dos adaptadores para subir archivos, el adaptador FileUpload y el adaptador ImageUpload.
factory()
Este metodo permite obtener un objeto Upload correspondiente al adaptador requerido. Los argumentos que acepta son los siguientes:
$name (string): el nombre del campo correspondiente al archivo en el formulario. $adapter (string): adaptador para upload (file, image) factory($name, $adapter = 'file')
Ejemplo simple
Se presenta un ejemplo simple de uso de la libreria Upload.
Modelo "Archivador":
class Archivador
{
/**
* Guardar archivo
*
* @return boolean
*/
public static function guardar()
{
$file = Upload::factory('archivo');
// Guarda el archivo en el directorio "public/files/upload"
if($file->save()) {
Flash::valid('Operación Exitosa');
return TRUE;
}
return FALSE;
}
}
Controlador "ArchivadorController":
class ArchivadorController extends ApplicationController
{
/**
* Accion para subir archivo
*
*/
public function subir()
{
$archivador = Load::model('archivador');
$archivador->guardar();
}
}
En la vista "subir.phtml":
<?php View::content() ?>
<h1>Subir Archivo</h1>
<?php echo Form::openMultipart() ?>
<?php echo Form::file('archivo') ?>
<?php echo Form::submit('Subir') ?>
<?php echo Form::close() ?>
Adaptador File
Este adaptador es utilizado para subir archivos de cualquier tipo, por defecto estos se guardan en el directorio public/files/upload. Este adaptador cuenta con los siguientes métodos:
setPath()
Asigna la ruta al directorio de destino para el archivo. Por defecto se considera public/files/upload.
$path (string): ruta de destino
$file = Upload::factory('archivo');
// Nueva ruta de destino
$file->setPath(APP_PATH . 'temp/archivos');
setAllowScripts()
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.
$value (boolean): indica si se permite subir o no scripts. setAllowScripts($value)
$file = Upload::factory('archivo');
// Esto se hace bajo propio riesgo.
$file->setAllowScripts(TRUE);
setMinSize()
Indica el tamaño mínimo permitido para el archivo.
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB". setMinSize($size)
$file = Upload::factory('archivo');
$file->setMinSize('0.3 MB');
setMaxSize()
Indica el tamaño máximo permitido para el archivo.
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB". setMaxSize($size)
$file = Upload::factory('archivo');
$file->setMaxSize('1 MB');
setTypes()
Indica los tipos de archivos permitidos.
$value (array): lista de tipos de archivos permitidos según estándar MIME. Ejemplo: "text/plain". setTypes($value)
$file = Upload::factory('archivo');
// Documentos de texto
$file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));
setExtensions()
Indica las extensiones de archivos permitidas.
$value (array): lista de extensiones para archivos. Ejemplo: "png". setExtensions($value)
$file = Upload::factory('archivo');
// Documentos de texto
$file->setExtensions(array('txt', 'dot', 'doc'));