Diferencia entre revisiones de «KumbiaPHP Framework Versión 1.0 Beta2»

De KumbiaPHP Framework Wiki
 
(No se muestran 104 ediciones intermedias de 24 usuarios)
Línea 1: Línea 1:
 
Documentación de KumbiaPHP 1.0 beta2
 
Documentación de KumbiaPHP 1.0 beta2
  
== '''Clase Html''' ==
+
 
 +
== 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'''
 +
<source lang=php>
 +
Load::lib('session');
 +
$var = Session::get('var');</source>
 +
 
 +
'''Versión 1.0 beta 2'''
 +
<source lang=php>$var = Session::get('var');</source>
 +
 
 +
 
 +
==== ¿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 ==
 +
Los helpers (ayudas) se usan en los views. Encapsulan código en métodos para su fácil reuso.
 +
KumbiaPHP ya viene con helpers creados.
 +
 
 +
Pero lo realmente útil, es que los usuarios se pueden crear sus propios helpers y colocarlos en app/extensions/helpers/. Y después usarlos tranquilamente en sus views, KumbiaPHP se encarga de cargar transparentemente sus helpers asi como los uses.
 +
=== Clase Html ===
  
 
Clase con métodos estáticos con la que podemos crear etiquetas HTML optimizadas respetando las convenciones de KumbiaPHP.
 
Clase con métodos estáticos con la que podemos crear etiquetas HTML optimizadas respetando las convenciones de KumbiaPHP.
  
  
=== Html::img() ===
+
==== Html::img() ====
 
Permite incluir una imagen
 
Permite incluir una imagen
 
<pre>
 
<pre>
Línea 23: Línea 78:
  
  
=== Html::link() ===
+
==== Html::link() ====
 
Permite incluir un link  
 
Permite incluir un link  
 
<pre>
 
<pre>
Línea 39: Línea 94:
  
  
=== Html::lists() ===
+
==== Html::lists() ====
 
Crea una lista html a partir de un array
 
Crea una lista html a partir de un array
 
<pre>
 
<pre>
Línea 68: Línea 123:
  
  
 +
==== Html::gravatar() ====
 +
Incluye imágenes de http://www.gravatar.com
 +
<pre>
 +
$email Correo para conseguir su gravatar
 +
$alt Texto alternativo de la imagen. Por defecto: gravatar
 +
$size Tamaño del gravatar. Un numero de 1 a 512. Por defecto: 40
 +
$default URL gravatar por defecto si no existe, o un default de gravatar. Por defecto: mm
 +
</pre>
 +
<source lang=php>
 +
echo Html::gravatar( $email ); // Simple
 +
echo Html::link( Html::gravatar($email), $url); // Un gravatar que es un link
 +
echo Html::gravatar( $email, $name, 20, 'http://www.example.com/default.jpg'); //Completo
 +
</source>
  
=== Html::includeCss() ===
+
 
 +
==== Html::includeCss() ====
 
Incluye los archivos CSS que previamente fueron cargados a la lista mediante Tag::css()
 
Incluye los archivos CSS que previamente fueron cargados a la lista mediante Tag::css()
  
Línea 78: Línea 147:
  
  
 +
==== Html::meta() ====
 +
Crea un metatag y lo agrega a una lista estatica que sera añadida mas adelnate mediante Html::includeMetatags();
  
=== Html::headLink() ===
+
<pre>
Enlaza una acción
+
$content contenido del metatag
 +
$attrs atributos adicionales del tag
 +
meta($content, $attrs = NULL)
 +
</pre>
  
me falta info...
+
<source lang=php>
 +
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'/>
 +
</source>
  
=== Html::headLinkAction() ===
 
Enlaza una accion
 
  
me falta info...
+
==== Html::includeMetatags() ====
 +
Agrega los metatag que previamente se habia agregado
  
 +
<source lang=php>
 +
Html::meta('Kumbiaphp-team',"name = 'Author'");
 +
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'");
 +
echo Html::includeMetatags(); //Visualiza <meta content="Kumbiaphp-team" name = 'Author'/>
 +
</source>
  
=== Html::headLinkResource() ===
+
==== Html::headLink() ====
Enlaza un recurso de la aplicacion
+
Agrega un elemento de vinculo externo de tipo [http://html.conclase.net/w3c/html401-es/struct/links.html#h-12.3 <link> ] a la cola de enlaces (para poder ser visualizado se requiere de Html::includeHeadLinks() de modo similar que Html::includeCss())
  
me falta info...
+
<pre>
 +
$href direccion url del recurso a enlazar
 +
$attrs atributos adicionales
 +
 
 +
headLink($href, $attrs = NULL)
 +
</pre>
 +
 
 +
<source lang="php" line>
 +
//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"
 +
Html::headlink('http://www.kumbiaphp.com/public/style.css',"rel='stylesheet',type='text/css' media='screen'");
 +
 
 +
/*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
 +
</source>
 +
 
 +
==== Html::headLinkAction() ====
 +
Agrega un elemento de vinculo interno de tipo [http://html.conclase.net/w3c/html401-es/struct/links.html#h-12.3 <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
 +
 
 +
<pre>
 +
$href direccion url del recurso a enlazar
 +
$attrs atributos adicionales
 +
 
 +
headLinkAction($action, $attrs = NULL)
 +
</pre>
 +
 
 +
<source lang="php" line>
 +
 
 +
/*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
 +
</source>
 +
 
 +
 
 +
 
 +
==== Html::headLinkResource() ====
 +
Agrega un elemento de vinculo a un recurso interno con la etiqueta  [http://html.conclase.net/w3c/html401-es/struct/links.html#h-12.3 <link> ] a la cola de enlaces (para poder ser visualizado se requiere de Html::includeHeadLinks())
 +
 
 +
<pre>
 +
$resource ubicacion del recurso en public
 +
$attrs atributos adicionales
 +
 
 +
headLinkResource($resource, $attrs = NULL)
 +
</pre>
 +
 
 +
<source lang="php" line>
 +
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
 +
</source>
  
=== Html::includeHeadLinks() ===
+
 
Incluye los links para el head
+
 
 +
==== Html::includeHeadLinks() ====
 +
Incluye los links que previamente se pusieron en cola
  
 
<source lang=php>
 
<source lang=php>
echo Html::headLink('www.google.com');
+
 
 +
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();
 
echo Html::includeHeadLinks();
 
</source>
 
</source>
  
 
+
=== '''Clase Tag''' ===
 
 
== '''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  
 
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  
Línea 112: Línea 251:
 
Las funciones de esta clase son de tipo static lo que nos permite referenciarlas directamente de la forma como se presentan a continuación.
 
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() ===
+
==== Tag::css() ====
  
 
Incluye un archivo CSS a la lista
 
Incluye un archivo CSS a la lista
Línea 120: Línea 259:
 
</source>
 
</source>
  
=== Tag::js() ===
+
==== Tag::js() ====
 
Incluye un archivo JavaScript a la vista, partial o template
 
Incluye un archivo JavaScript a la vista, partial o template
 
<source lang=php>
 
<source lang=php>
Tag::js('jquery/jquery.kumbiaphp')   //Adiciona un archivo javascript (app/public/javascript/jquery/jquery.kumbiaphp)
+
<?php echo Tag::js('jquery/html5shiv');?>  //Adiciona un archivo javascript (app/public/javascript/jquery/html5shiv.js)
 +
// no poner la terminación js
 +
// no olvides de poner echo antes de TAG
 
</source>
 
</source>
  
 
+
=== '''Clase Form''' ===
== '''Clase Form''' ==
 
 
Clase para el manejo y la creación de formularios
 
Clase para el manejo y la creación de formularios
  
  
=== Form::open() ===
+
==== Form::open() ====
 
Crea una etiqueta de formulario
 
Crea una etiqueta de formulario
 
<pre>
 
<pre>
 
$action acción a  la que envía los datos, por defecto llama la misma acción de donde proviene
 
$action acción a  la que envía los datos, por defecto llama la misma acción de donde proviene
$method 'post' o 'get', por defecto se tiene en 'post'
+
$method 'POST', 'GET', 'DELETE', 'HEAD', 'PUT'. Por defecto se tiene en 'POST'
 
$attrs atributos adicionales
 
$attrs atributos adicionales
  
open($action = NULL, $method = 'post', $attrs = NULL)
+
Form::open($action = NULL, $method = 'POST', $attrs = NULL)
 
</pre>
 
</pre>
  
 
<source lang=php>
 
<source lang=php>
 
/*Ejemplo*/
 
/*Ejemplo*/
echo Form::open();//inicia un formulario que enviara los datos a la acción que corresponde a la vista actual
+
<?php echo Form::open(); ?>//inicia un formulario que enviara los datos a la acción que corresponde al controller actual
echo Form::open('usuarios/nuevo');//inicia un formulario que enviara los datos al controller 'usuario' y la acción 'nuevo'
+
<?php echo Form::open('usuarios/nuevo'); ?> //inicia un formulario que enviara los datos al controller 'usuarios' y la acción 'nuevo'
 
</source>
 
</source>
  
 
+
==== Form::openMultipart() ====
 
 
 
 
=== Form::multipart() ===
 
 
Crea una etiqueta de formulario multipart, este es ideal para formularios que contienen campos de subida de archivos
 
Crea una etiqueta de formulario multipart, este es ideal para formularios que contienen campos de subida de archivos
 
<pre>
 
<pre>
Línea 161: Línea 298:
 
<source lang=php>
 
<source lang=php>
 
/*Ejemplo*/
 
/*Ejemplo*/
echo Form::multipart();//inicia un formulario multipart que enviara los datos a la acción que corresponde a la vista actual
+
echo Form::openMultipart();//inicia un formulario multipart que enviara los datos a la acción que corresponde a la vista actual
echo Form::multipart('usuarios/nuevo');//inicia un formulario multipart que enviara los datos al controller 'usuario' y la acción 'nuevo'
+
echo Form::openMultipart('usuarios/nuevo');//inicia un formulario multipart que enviara los datos al controller 'usuario' y la acción 'nuevo'
 
</source>
 
</source>
  
  
  
=== Form::close() ===
+
==== Form::close() ====
 
Crea una etiqueta de cierre de formulario
 
Crea una etiqueta de cierre de formulario
  
Línea 177: Línea 314:
  
  
=== Form::input() ===
+
==== Form::input() ====
 
Crea un campo de tipo input
 
Crea un campo de tipo input
 
<pre>
 
<pre>
Línea 193: Línea 330:
  
  
=== Form::text() ===
+
==== Form::text() ====
 
Crea un campo de tipo input
 
Crea un campo de tipo input
  
Línea 214: Línea 351:
  
  
=== Form::pass() ===
+
==== Form::pass() ====
 
Crea un campo de tipo Password
 
Crea un campo de tipo Password
 
<pre>
 
<pre>
Línea 231: Línea 368:
  
  
=== Form::textarea() ===
+
==== Form::textarea() ====
 
Crea un textarea
 
Crea un textarea
 
<pre>
 
<pre>
Línea 247: Línea 384:
  
  
=== Form::label() ===
+
==== Form::label() ====
 
Crea un label y lo asocia a un campo
 
Crea un label y lo asocia a un campo
 
<pre>
 
<pre>
Línea 264: Línea 401:
  
  
=== Form::hidden() ===
+
==== Form::hidden() ====
 
Crea un campo hidden (campo oculto)
 
Crea un campo hidden (campo oculto)
 
<pre>
 
<pre>
Línea 280: Línea 417:
  
  
=== Form::dbSelect() ===
+
==== Form::dbSelect() ====
Crea campo Select que toma los valores de un array de objetos
+
Crea un select con los datos de la tabla relacionada.
<pre>
+
 
$field nombre de campo
+
La forma más simple usa convención, pero se puede configurar también. Ojo, no es necesario instanciar el modelo en el controller.
$data array de valores para la lista desplegable
+
 
$show campo que se mostrara
+
Ejemplos de uso:
$blank campo en blanco
+
<source lang=php>Form::dbSelect('model.campo_id');</source>
$attrs atributos de campo
+
Esto carga el modelo(campo) y muestra el primer campo despues del pk(id), ordenado ascendentemente.
$value valor inicial para el campo oculto
+
 
 +
El 80-90% casos es suficiente.
 +
 
 +
Tambien se puede elegir poner en la tabla el siguiente campo (id,usuario,...)(id,ciudad,...)(id,pais,...)
 +
(id,departamento,...)(id,nombre,...).
 +
 
 +
 
 +
Para elegir otro campo, que no es el siguiente al pk.
 +
 
 +
Queda muy fácil asi:
 +
<source lang=php>Form::dbSelect('model.campo_id','campo');</source>
 +
En este caso le indigamos el campo a mostrar y se muestra ordenado ascendentemente.
 +
 
 +
 
 +
Para casos especiales también se puede configurar:
 +
<source lang=php>Form::dbSelect('model.campo_id','campo',array('modelo','metodo','param'));</source>
 +
Campo es el campo a mostrar.
 +
El array de datos para la conexión, $modelo->metodo(param).
  
dbSelect($field, $data, $show, $blank = NULL, $attrs = NULL, $value = NULL)
+
En este último caso el único parámetro opcional es el 'param'.
</pre>
 
  
<source lang=php>
+
KISS KumbiaPHP :).
ejemplo pendiente...
 
</source>
 
  
=== Form::select() ===
+
==== Form::select() ====
 
Crea un campo Select (un combobox)
 
Crea un campo Select (un combobox)
 
<pre>
 
<pre>
Línea 312: Línea 463:
 
echo Form::Select('region', $ar2,'Cuello'); //Crea un campo Select (un combobox) con el nombre 'region' y teniendo preseleccionado 'Cuello'
 
echo Form::Select('region', $ar2,'Cuello'); //Crea un campo Select (un combobox) con el nombre 'region' y teniendo preseleccionado 'Cuello'
 
</source>
 
</source>
 +
Resultado:
 +
<pre>
 +
<select id="region" name="region">
 +
<option value="0">Abdomen</option>
 +
<option value="1">Brazos</option>
 +
[...]
 +
</select>
 +
</pre>
 +
Otra Posibilidad:
 +
<source lang=php>
 +
$ar2 = array('Abdomen'=>'Abdomen','Brazos'=>'Brazos','Cabeza'=>'Cabeza','Cuello'=>'Cuello','Genitales'=>'Genitales','Piernas'=>'Piernas','Tórax'=>'Tórax','Otros'=>'Otros');
 +
echo Form::Select('region', $ar2,'Cuello');
 +
</source>
 +
Resultado:
 +
<pre>
 +
<select id="region" name="region">
 +
<option value="Abdomen">Abdomen</option>
 +
<option value="Brazos">Brazos</option>
 +
[...]
 +
</select>
 +
</pre>
  
 
+
==== Form::file() ====
=== Form::file() ===
 
 
Crea campo File para subir archivos, el formulario se debe abrir con Form::openMultipart()
 
Crea campo File para subir archivos, el formulario se debe abrir con Form::openMultipart()
 
<pre>  
 
<pre>  
Línea 329: Línea 500:
 
</source>
 
</source>
  
 
+
==== Form::button() ====
=== Form::button() ===
 
 
Crea un botón
 
Crea un botón
 
<pre>
 
<pre>
Línea 344: Línea 514:
  
  
=== Form::submitImage() ===
+
==== Form::submitImage() ====
Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen devera estar dentro del directorio '/public/img/'
+
Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen deberá estar dentro del directorio '/public/img/'
 
<pre>
 
<pre>
 
$img ruta de la imagen que usa el botón
 
$img ruta de la imagen que usa el botón
Línea 357: Línea 527:
 
</source>
 
</source>
  
 
+
==== Form::submit() ====
=== Form::submit() ===
 
 
Crea un boton de submit para el formulario actual
 
Crea un boton de submit para el formulario actual
 
<pre>
 
<pre>
Línea 372: Línea 541:
  
  
=== Form::reset() ===
+
==== Form::reset() ====
 
Crea un botón reset para el formulario actual
 
Crea un botón reset para el formulario actual
 
<pre>
 
<pre>
Línea 386: Línea 555:
  
  
=== Form::check() ===
+
==== Form::check() ====
 
Crea un checkbox
 
Crea un checkbox
 
<pre>
 
<pre>
Línea 394: Línea 563:
 
$checked indica si se marca el campo
 
$checked indica si se marca el campo
  
check($field, $value, $attrs = NULL, $checked = NULL)
+
check($field, $value, $attrs = NULL, $checked = NULL);
 
</pre>
 
</pre>
  
 
<source lang=php>
 
<source lang=php>
ejemplo pendiente..
+
    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"
 +
   
 
</source>
 
</source>
  
 
+
==== Form::radio() ====
=== Form::radio() ===
 
 
Crea un radio button
 
Crea un radio button
 
<pre>
 
<pre>
Línea 414: Línea 584:
  
 
<source lang=php>
 
<source lang=php>
ejemplo pendiente..
+
$on = 'masculino';
 +
echo Form::radio("rdo", 'masculino', NULL, TRUE);  //<input id="rdo1" name="rdo" type="radio" value="masculino" checked="checked">
 +
echo Form::radio("rdo", 'femenino'); //<input id="rdo2" name="rdo" type="radio" value="femenino">
 +
</source>
 +
 
 +
 
 +
 
 +
----
 +
 
 +
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  [[Beta2_CRUD_en_KumbiaPHP_Framework| 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:
 +
 
 +
<pre>
 +
$name (string): el nombre del campo correspondiente al archivo en el formulario.
 +
$adapter (string): adaptador para upload (file, image)
 +
 
 +
factory($name, $adapter = 'file')
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
</source>
 +
 
 +
 
 +
 
 +
 
 +
 
 +
=== Ejemplo simple ===
 +
Se presenta un ejemplo simple de uso de la libreria Upload.
 +
 
 +
Modelo '''archivador.php''':
 +
 
 +
<source lang=php>
 +
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;
 +
    }
 +
}
 +
</source>
 +
 
 +
Controlador '''archivador_controller.php''':
 +
 
 +
<source lang=php>
 +
class ArchivadorController extends ApplicationController
 +
{
 +
    /**
 +
    * Accion para subir archivo
 +
    *
 +
    */
 +
    public function subir()
 +
    {
 +
        $archivador = Load::model('archivador');
 +
        $archivador->guardar();
 +
    }
 +
}
 +
</source>
 +
 
 +
En la vista '''subir.phtml''':
 +
 
 +
<source lang=php>
 +
<?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() ?>
 +
</source>
 +
 
 +
=== 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:
 +
 
 +
==== save() ====
 +
Guarda el archivo subido.
 +
 
 +
<pre>
 +
$name (string): nombre con el que se guardará el archivo, por defecto se guarda con su nombre original.
 +
 
 +
Retorna (boolean).
 +
 
 +
save($name = NULL)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
 
 +
// Guarda el archivo
 +
$file->save();
 +
</source>
 +
 
 +
==== saveRandom() ====
 +
Guarda el archivo subido con un nombre aleatorio. El nombre del archivo se genera con la siguiente instrucción '''md5(time())''', por lo tanto cada nombre de archivo es único.
 +
 
 +
<pre>
 +
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.
 +
 
 +
saveRandom()
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
 
 +
// Guarda el archivo
 +
$fileName = $file->saveRandom();
 +
</source>
 +
 
 +
 
 +
==== isUploaded() ====
 +
Verifica si el archivo esta subido de manera que posteriormente se pueda guardar.
 +
 
 +
<pre>
 +
Retorna (boolean).
 +
 
 +
isUploaded()
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
 
 +
if($file->isUploaded()) {
 +
    echo 'Archivo listo para guardarse';
 +
}
 +
</source>
 +
 
 +
==== setPath() ====
 +
Asigna la ruta al directorio de destino para el archivo. Por defecto se considera '''public/files/upload'''.
 +
 
 +
<pre>
 +
$path (string): ruta de destino
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
 
 +
// Nueva ruta de destino
 +
$file->setPath(APP_PATH . 'temp/archivos');
 +
</source>
 +
 
 +
==== setAllowScripts() ====
 +
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.
 +
 
 +
<pre>
 +
$value (boolean): indica si se permite subir o no scripts.
 +
 
 +
setAllowScripts($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
 
 +
// Esto se hace bajo propio riesgo.
 +
$file->setAllowScripts(TRUE);
 
</source>
 
</source>
  
 +
==== setMinSize() ====
 +
Indica el tamaño mínimo permitido para el archivo.
  
 +
<pre>
 +
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".
 +
 +
setMinSize($size)
 +
</pre>
  
= Migrando de 1.0 Beta 1 a 1.0 Beta 2 =
+
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
$file->setMinSize('0.3 MB');
 +
</source>
 +
 
 +
==== setMaxSize() ====
 +
Indica el tamaño máximo permitido para el archivo.
 +
 
 +
<pre>
 +
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".
 +
 
 +
setMaxSize($size)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
$file->setMaxSize('1 MB');
 +
</source>
 +
 
 +
==== setTypes() ====
 +
Indica los tipos de archivos permitidos.
 +
 
 +
<pre>
 +
$value (array): lista de tipos de archivos permitidos según estándar MIME. Ejemplo: "text/plain".
 +
 
 +
setTypes($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
 
 +
// Documentos de texto
 +
$file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));
 +
</source>
 +
 
 +
==== setExtensions() ====
 +
Indica las extensiones de archivos permitidas.
 +
 
 +
<pre>
 +
$value (array): lista de extensiones para archivos. Ejemplo: "png".
 +
 
 +
setExtensions($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$file = Upload::factory('archivo');
 +
 
 +
// Documentos de texto
 +
$file->setExtensions(array('txt', 'dot', 'doc'));
 +
</source>
 +
 
 +
==== Ejemplo ====
 +
En el siguiente ejemplo se muestra un caso donde se desea subir archivos de texto al servidor.
 +
 
 +
Modelo '''documento.php''':
 +
 
 +
<source lang=php>
 +
/**
 +
* Modelo para subir documentos de texto
 +
*
 +
*/
 +
 
 +
// Carga la libreria Upload
 +
Load::lib('upload');
 +
 
 +
class Documento
 +
{
 +
    /**
 +
    * Guarda el documento
 +
    *
 +
    * @return boolean
 +
    */
 +
    public function guardar()
 +
    {
 +
        // Instancia con factory un objeto FileUpload
 +
        $file = Upload::factory('documento');
 +
 
 +
        // Verifica si se subió el documento
 +
        if(!$file->isUploaded()) {
 +
            return FALSE;
 +
        }
 +
 
 +
        // Tamaño máximo
 +
        $file->setMaxSize('2MB');
 +
 
 +
        // Tipos de archivos permitidos
 +
        $file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));
 +
 
 +
        // Extensiones permitidas
 +
        $file->setExtensions(array('txt', 'dot', 'doc'));
 +
 
 +
        // Guarda el archivo
 +
        if($file->save()) {
 +
            Flash::valid('Operación Exitosa');
 +
            return TRUE;
 +
        }
 +
 
 +
        return FALSE;
 +
    }
 +
}
 +
</source>
 +
 
 +
Controlador '''documento_controller.php''':
 +
 
 +
<source lang=php>
 +
class DocumentoController extends ApplicationController
 +
{
 +
    /**
 +
    * Accion para subir documento
 +
    *
 +
    */
 +
    public function subir()
 +
    {
 +
        $documento = Load::model('documento');
 +
        $documento->guardar();
 +
    }
 +
}
 +
</source>
 +
 
 +
Vista '''subir.phtml''':
 +
 
 +
<source lang=php>
 +
<?php View::content() ?>
 
   
 
   
La versión 1.0 beta2 trae consigo correcciones y mejoras, nuevos helpers, clases y extensiones que facilitaran aun mas el trabajo.
+
<h1>Subir Documento</h1>
 +
 +
<?php echo Form::openMultipart() ?>
 +
  <?php echo Form::file('documento') ?>
 +
  <?php echo Form::submit('Subir') ?>
 +
<?php echo Form::close() ?>
 +
</source>
 +
 
 +
=== Adaptador Image ===
 +
Este adaptador es utilizado para subir archivos de imagen, por defecto estos se guardan en el directorio '''public/img/upload'''. Este adaptador cuenta con los siguientes métodos:
 +
 
 +
==== save() ====
 +
Guarda el archivo subido.
 +
 
 +
<pre>
 +
$name (string): nombre con el que se guardará el archivo de imagen, por defecto se guarda con su nombre original.
 +
 
 +
Retorna (boolean).
 +
 
 +
save($name = NULL)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
 
 +
// Guarda la imagen
 +
$img->save();
 +
</source>
 +
 
 +
==== saveRandom() ====
 +
Guarda el archivo de imagen subido con un nombre aleatorio. El nombre del archivo se genera con la siguiente instrucción '''md5(time())''', por lo tanto cada nombre de archivo es único.
 +
 
 +
<pre>
 +
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.
 +
 
 +
saveRandom()
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
 
 +
// Guarda el archivo
 +
$fileName = $img->saveRandom();
 +
</source>
 +
 
 +
 
 +
==== isUploaded() ====
 +
Verifica si el archivo de imagen esta subido de manera que posteriormente se pueda guardar.
 +
 
 +
<pre>
 +
Retorna (boolean).
 +
 
 +
isUploaded()
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
 
 +
if($img->isUploaded()) {
 +
    echo 'Archivo listo para guardarse';
 +
}
 +
</source>
 +
 
 +
==== setPath() ====
 +
Asigna la ruta al directorio de destino para el archivo de imagen. Por defecto se considera '''public/img/upload'''.
 +
 
 +
<pre>
 +
$path (string): ruta de destino
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
 
 +
// Nueva ruta de destino
 +
$img->setPath(APP_PATH . 'temp/fotos');
 +
</source>
 +
 
 +
==== setAllowScripts() ====
 +
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.
 +
 
 +
<pre>
 +
$value (boolean): indica si se permite subir o no scripts.
 +
 
 +
setAllowScripts($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
 
 +
// Esto se hace bajo propio riesgo.
 +
$img->setAllowScripts(TRUE);
 +
</source>
 +
 
 +
==== setMinSize() ====
 +
Indica el tamaño mínimo permitido para el archivo de imagen.
 +
 
 +
<pre>
 +
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".
 +
 
 +
setMinSize($size)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
$img->setMinSize('0.3 MB');
 +
</source>
 +
 
 +
==== setMaxSize() ====
 +
Indica el tamaño máximo permitido para el archivo.
 +
 
 +
<pre>
 +
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".
 +
 
 +
setMaxSize($size)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
$img->setMaxSize('1 MB');
 +
</source>
 +
 
 +
==== setTypes() ====
 +
Indica los tipos de archivos de imagen permitidos.
 +
 
 +
<pre>
 +
$value (array): lista de tipos de archivos de imagen permitidos según estándar MIME. Ejemplo: "jpg".
 +
 
 +
setTypes($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
 
 +
// Archivos de imágenes
 +
// Para una mayor referencia del estándar MIME: http://www.w3schools.com/media/media_mimeref.asp
 +
$img->setTypes(array('jpeg', 'gif', 'png'));
 +
</source>
 +
 
 +
==== setExtensions() ====
 +
Indica las extensiones de archivos permitidas.
 +
 
 +
<pre>
 +
$value (array): lista de extensiones para archivos. Ejemplo: "png".
 +
 
 +
setExtensions($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
 
 +
// Formatos de Imagenes
 +
$img->setExtensions(array('jpg', 'gif', 'png'));
 +
 
 +
</source>
 +
 
 +
==== setMinWidth() ====
 +
Indica el ancho mínimo en pixeles permitido para el archivo de imagen.
 +
 
 +
<pre>
 +
$value (int): ancho en pixeles.
 +
 
 +
setMinWidth($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
$img->setMinWidth(200);
 +
</source>
 +
 
 +
==== setMaxWidth() ====
 +
Indica el ancho máximo en pixeles permitido para el archivo de imagen.
 +
 
 +
<pre>
 +
$value (int): ancho en pixeles.
 +
 
 +
setMaxWidth($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
$img->setMaxWidth(200);
 +
</source>
 +
 
 +
==== setMinHeight() ====
 +
Indica el alto mínimo en pixeles permitido para el archivo de imagen.
 +
 
 +
<pre>
 +
$value (int): alto en pixeles.
 +
 
 +
setMinHeight($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
$img->setMinHeight(200);
 +
</source>
 +
 
 +
==== setMaxHeight() ====
 +
Indica el alto máximo en pixeles permitido para el archivo de imagen.
 +
 
 +
<pre>
 +
$value (int): alto en pixeles.
 +
 
 +
setMaxHeight($value)
 +
</pre>
 +
 
 +
<source lang=php>
 +
$img = Upload::factory('imagen', 'image');
 +
$img->setMaxHeight(200);
 +
</source>
 +
 
 +
==== Ejemplo ====
 +
En el siguiente ejemplo se muestra un caso donde se desea subir una foto a un servidor.
 +
 
 +
Modelo '''foto.php''':
 +
 
 +
<source lang=php>
 +
/**
 +
* Modelo para subir fotos
 +
*
 +
*/
 +
 
 +
// Carga la libreria Upload
 +
Load::lib('upload');
 +
 
 +
class Foto
 +
{
 +
    /**
 +
    * Guarda el documento
 +
    *
 +
    * @return boolean
 +
    */
 +
    public function guardar()
 +
    {
 +
        // Instancia con factory un objeto ImageUpload
 +
        $img = Upload::factory('foto', 'image');
  
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.
+
        // Verifica si se subió la imagen
 +
        if(!$img->isUploaded()) {
 +
            return FALSE;
 +
        }
  
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
+
        // Tamaño máximo
 +
        $img->setMaxSize('2MB');
  
== Autoload libs (new) ==
+
        // Tipos de imagenes permitidas
 +
        $img->setTypes(array('jpg', 'png'));
  
 +
        // Extensiones permitidas
 +
        $img->setExtensions(array('jpg', 'png'));
  
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
+
        // Guarda la imagen
 +
        if($img->save()) {
 +
            Flash::valid('Operación Exitosa');
 +
            return TRUE;
 +
        }
  
=== ¿Que debo cambiar? ===
+
        return FALSE;
 +
    }
 +
}
 +
</source>
  
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.  
+
Controlador '''foto_controller.php''':
En resumen: eliminar todas las cargas de librerías que se hagan mediante load::lib(''); y boot.ini
 
  
=== Como se usa ===
+
<source lang=php>
 +
class FotoController extends ApplicationController
 +
{
 +
    /**
 +
    * Accion para subir foto
 +
    *
 +
    */
 +
    public function subir()
 +
    {
 +
        $foto = Load::model('foto');
 +
        $foto->guardar();
 +
    }
 +
}
 +
</source>
  
Como verán se omite la carga de librerías y se crea directamente el objeto
+
Vista '''subir.phtml''':
  
'''Versión 1.0 beta 1'''
 
 
<source lang=php>
 
<source lang=php>
Load::lib('util');
+
<?php View::content() ?>
$var = new util();</source>
+
 +
<h1>Subir Foto</h1>
 +
 +
<?php echo Form::openMultipart() ?>
 +
  <?php echo Form::file('foto') ?>
 +
  <?php echo Form::submit('Subir') ?>
 +
<?php echo Form::close() ?>
 +
</source>
 +
 
 +
== Libreria Session ==
  
'''Versión 1.0 beta 2'''
+
A la libreria Session se le modifican sus métodos quedando de la siguiente forma:
<source lang=php>$var = new util();</source>
 
  
 +
=== Session::set() ===
 +
Crear o especifica el valor para un indice de la sesión actual.
  
 +
<pre>
 +
$index      Nombre para el indice.
 +
$value      Valor a almacenar.
 +
$namespace  Espacio individual donde se almacenara el indice.
  
== Controller principal cambio de nombre ==
+
Session::set($index, $value, $namespace='default')
 +
</pre>
  
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
+
<source lang=php>
 +
/* Ejemplo */
 +
Session::set('usuario', 'Administrador'); // Genera el indice 'usuario' que contendra 'Administrador'.
 +
</source>
 +
 
 +
=== Session::get() ===
 +
Obtiene el valor para un indice de la sesión actual.
 +
 
 +
<pre>
 +
$index      Nombre del indice a obtener.
 +
$namespace  Espacio individual donde se almacena el indice.
  
¿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
+
Session::get($index, $namespace='default')
 +
</pre>
  
 +
<source lang=php>
 +
/* Ejemplo */
 +
echo Session::get('usuario'); // Pinta 'Administrador'.
 +
</source>
  
 +
=== Session::delete() ===
 +
Elimina el valor para un indice de la sesión actual.
  
== Nuevo árbol de directorios ==
+
<pre>
 +
$index      Nombre del indice a eliminar.
 +
$namespace  Espacio individual donde se almacena el indice.
  
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í.
+
Session::delete($index, $namespace='default')
 +
</pre>
  
_shared es el directorio 'app/views/_shared' que ahora almacena partials, templates y errors
+
<source lang=php>
 +
/* Ejemplo */
 +
Session::delete('usuario'); // Elimina el indice 'usuario'.
 +
</source>
  
Así que en nuestra migración debemos mover los archivos correspondientes a dichos directorios
+
=== Session::has() ===
Ejemplo: 'app/views/partials/menu.phtml' pasara al directorio 'app/views/_shared/partials/menu.phtml'
+
Verifica que este definido el indice en la sesión actual.
(pueden ver el ejemplo básico dentro de su app con el partial footer.phtml que se encuentra en dicho directorio)
 
  
 +
<pre>
 +
$index      Nombre del indice a verificar.
 +
$namespace  Espacio individual donde se almacena el indice.
  
 +
Session::has($index, $namespace='default')
 +
</pre>
  
 +
<source lang=php>
 +
/* Ejemplo */
 +
Session::has('id_usuario'); // Retorna FALSE.
 +
</source>
  
--[[Usuario:Onizukar|Onizukar]] 16:16 05 mar 2010 (UTC)
+
NOTA: '''$namespace''' es un espacio individual en el cual se pueden contener las variables de sesión, permitiendo evitar colisiones con nombres de variables.
--[[Usuario:Ingjuanfelipe|Ingjuanfelipe]] 20:38 21 feb 2010 (UTC)
 

Revisión actual del 20:43 29 nov 2016

Documentación de KumbiaPHP 1.0 beta2


Sumario

Migrando de la versión 1.0 Beta1 a Beta2[editar]

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)[editar]

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[editar]

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?[editar]

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[editar]

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[editar]

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[editar]

Los helpers (ayudas) se usan en los views. Encapsulan código en métodos para su fácil reuso. KumbiaPHP ya viene con helpers creados.

Pero lo realmente útil, es que los usuarios se pueden crear sus propios helpers y colocarlos en app/extensions/helpers/. Y después usarlos tranquilamente en sus views, KumbiaPHP se encarga de cargar transparentemente sus helpers asi como los uses.

Clase Html[editar]

Clase con métodos estáticos con la que podemos crear etiquetas HTML optimizadas respetando las convenciones de KumbiaPHP.


Html::img()[editar]

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()[editar]

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()[editar]

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::gravatar()[editar]

Incluye imágenes de http://www.gravatar.com

$email Correo para conseguir su gravatar
$alt Texto alternativo de la imagen. Por defecto: gravatar
$size Tamaño del gravatar. Un numero de 1 a 512. Por defecto: 40
$default URL gravatar por defecto si no existe, o un default de gravatar. Por defecto: mm
echo Html::gravatar( $email ); // Simple
echo Html::link( Html::gravatar($email), $url); // Un gravatar que es un link
echo Html::gravatar( $email, $name, 20, 'http://www.example.com/default.jpg'); //Completo


Html::includeCss()[editar]

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()[editar]

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()[editar]

Agrega los metatag que previamente se habia agregado

Html::meta('Kumbiaphp-team',"name = 'Author'");
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'");
echo Html::includeMetatags(); //Visualiza <meta content="Kumbiaphp-team" name = 'Author'/>

Html::headLink()[editar]

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)
//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"
Html::headlink('http://www.kumbiaphp.com/public/style.css',"rel='stylesheet',type='text/css' media='screen'"); 

/*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()[editar]

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()[editar]

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()[editar]

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[editar]

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()[editar]

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()[editar]

Incluye un archivo JavaScript a la vista, partial o template

<?php echo Tag::js('jquery/html5shiv');?>  //Adiciona un archivo javascript (app/public/javascript/jquery/html5shiv.js)
// no poner la terminación js
// no olvides de poner echo antes de TAG

Clase Form[editar]

Clase para el manejo y la creación de formularios


Form::open()[editar]

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()[editar]

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()[editar]

Crea una etiqueta de cierre de formulario

/*Ejemplo*/
echo Form::close();//crea una etiqueta de cierre de formulario </form>


Form::input()[editar]

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()[editar]

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()[editar]

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()[editar]

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()[editar]

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');


Form::hidden()[editar]

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()[editar]

Crea un select con los datos de la tabla relacionada.

La forma más simple usa convención, pero se puede configurar también. Ojo, no es necesario instanciar el modelo en el controller.

Ejemplos de uso:

Form::dbSelect('model.campo_id');

Esto carga el modelo(campo) y muestra el primer campo despues del pk(id), ordenado ascendentemente.

El 80-90% casos es suficiente.

Tambien se puede elegir poner en la tabla el siguiente campo (id,usuario,...)(id,ciudad,...)(id,pais,...) (id,departamento,...)(id,nombre,...).


Para elegir otro campo, que no es el siguiente al pk.

Queda muy fácil asi:

Form::dbSelect('model.campo_id','campo');

En este caso le indigamos el campo a mostrar y se muestra ordenado ascendentemente.


Para casos especiales también se puede configurar:

Form::dbSelect('model.campo_id','campo',array('modelo','metodo','param'));

Campo es el campo a mostrar. El array de datos para la conexión, $modelo->metodo(param).

En este último caso el único parámetro opcional es el 'param'.

KISS KumbiaPHP :).

Form::select()[editar]

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'

Resultado:

<select id="region" name="region">
<option value="0">Abdomen</option>
<option value="1">Brazos</option>
[...]
</select>

Otra Posibilidad:

$ar2 = array('Abdomen'=>'Abdomen','Brazos'=>'Brazos','Cabeza'=>'Cabeza','Cuello'=>'Cuello','Genitales'=>'Genitales','Piernas'=>'Piernas','Tórax'=>'Tórax','Otros'=>'Otros');
echo Form::Select('region', $ar2,'Cuello');

Resultado:

<select id="region" name="region">
<option value="Abdomen">Abdomen</option>
<option value="Brazos">Brazos</option>
[...]
</select>

Form::file()[editar]

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()[editar]

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()[editar]

Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen deberá 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()[editar]

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()[editar]

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()[editar]

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()[editar]

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', NULL, TRUE);  //<input id="rdo1" name="rdo" type="radio" value="masculino" checked="checked">
echo Form::radio("rdo", 'femenino'); //<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[editar]

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()[editar]

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')
$file = Upload::factory('archivo');



Ejemplo simple[editar]

Se presenta un ejemplo simple de uso de la libreria Upload.

Modelo archivador.php:

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 archivador_controller.php:

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[editar]

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:

save()[editar]

Guarda el archivo subido.

$name (string): nombre con el que se guardará el archivo, por defecto se guarda con su nombre original.

Retorna (boolean).

save($name = NULL)
$file = Upload::factory('archivo');

// Guarda el archivo
$file->save();

saveRandom()[editar]

Guarda el archivo subido con un nombre aleatorio. El nombre del archivo se genera con la siguiente instrucción md5(time()), por lo tanto cada nombre de archivo es único.

Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.

saveRandom()
$file = Upload::factory('archivo');

// Guarda el archivo
$fileName = $file->saveRandom();


isUploaded()[editar]

Verifica si el archivo esta subido de manera que posteriormente se pueda guardar.

Retorna (boolean).

isUploaded()
$file = Upload::factory('archivo');

if($file->isUploaded()) {
    echo 'Archivo listo para guardarse';
}

setPath()[editar]

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()[editar]

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()[editar]

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()[editar]

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()[editar]

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()[editar]

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'));

Ejemplo[editar]

En el siguiente ejemplo se muestra un caso donde se desea subir archivos de texto al servidor.

Modelo documento.php:

/**
 * Modelo para subir documentos de texto
 *
 */

// Carga la libreria Upload
Load::lib('upload');

class Documento
{
    /**
     * Guarda el documento
     *
     * @return boolean
     */
    public function guardar()
    {
        // Instancia con factory un objeto FileUpload
        $file = Upload::factory('documento');

        // Verifica si se subió el documento
        if(!$file->isUploaded()) {
            return FALSE;
        }

        // Tamaño máximo
        $file->setMaxSize('2MB');

        // Tipos de archivos permitidos
        $file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));

        // Extensiones permitidas
        $file->setExtensions(array('txt', 'dot', 'doc'));

        // Guarda el archivo
        if($file->save()) {
            Flash::valid('Operación Exitosa');
            return TRUE;
        }

        return FALSE;
    }
}

Controlador documento_controller.php:

class DocumentoController extends ApplicationController
{
    /**
     * Accion para subir documento
     *
     */
    public function subir()
    {
        $documento = Load::model('documento');
        $documento->guardar();
    }
}

Vista subir.phtml:

<?php View::content() ?>
 
<h1>Subir Documento</h1>
 
<?php echo Form::openMultipart() ?>
   <?php echo Form::file('documento') ?>
   <?php echo Form::submit('Subir') ?>
<?php echo Form::close() ?>

Adaptador Image[editar]

Este adaptador es utilizado para subir archivos de imagen, por defecto estos se guardan en el directorio public/img/upload. Este adaptador cuenta con los siguientes métodos:

save()[editar]

Guarda el archivo subido.

$name (string): nombre con el que se guardará el archivo de imagen, por defecto se guarda con su nombre original.

Retorna (boolean).

save($name = NULL)
$img = Upload::factory('imagen', 'image');

// Guarda la imagen
$img->save();

saveRandom()[editar]

Guarda el archivo de imagen subido con un nombre aleatorio. El nombre del archivo se genera con la siguiente instrucción md5(time()), por lo tanto cada nombre de archivo es único.

Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.

saveRandom()
$img = Upload::factory('imagen', 'image');

// Guarda el archivo
$fileName = $img->saveRandom();


isUploaded()[editar]

Verifica si el archivo de imagen esta subido de manera que posteriormente se pueda guardar.

Retorna (boolean).

isUploaded()
$img = Upload::factory('imagen', 'image');

if($img->isUploaded()) {
    echo 'Archivo listo para guardarse';
}

setPath()[editar]

Asigna la ruta al directorio de destino para el archivo de imagen. Por defecto se considera public/img/upload.

$path (string): ruta de destino
$img = Upload::factory('imagen', 'image');

// Nueva ruta de destino
$img->setPath(APP_PATH . 'temp/fotos');

setAllowScripts()[editar]

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)
$img = Upload::factory('imagen', 'image');

// Esto se hace bajo propio riesgo.
$img->setAllowScripts(TRUE);

setMinSize()[editar]

Indica el tamaño mínimo permitido para el archivo de imagen.

$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".

setMinSize($size)
$img = Upload::factory('imagen', 'image');
$img->setMinSize('0.3 MB');

setMaxSize()[editar]

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)
$img = Upload::factory('imagen', 'image');
$img->setMaxSize('1 MB');

setTypes()[editar]

Indica los tipos de archivos de imagen permitidos.

$value (array): lista de tipos de archivos de imagen permitidos según estándar MIME. Ejemplo: "jpg".

setTypes($value)
$img = Upload::factory('imagen', 'image');

// Archivos de imágenes
// Para una mayor referencia del estándar MIME: http://www.w3schools.com/media/media_mimeref.asp
$img->setTypes(array('jpeg', 'gif', 'png'));

setExtensions()[editar]

Indica las extensiones de archivos permitidas.

$value (array): lista de extensiones para archivos. Ejemplo: "png".

setExtensions($value)
$img = Upload::factory('imagen', 'image');

// Formatos de Imagenes
$img->setExtensions(array('jpg', 'gif', 'png'));

setMinWidth()[editar]

Indica el ancho mínimo en pixeles permitido para el archivo de imagen.

$value (int): ancho en pixeles.

setMinWidth($value)
$img = Upload::factory('imagen', 'image');
$img->setMinWidth(200);

setMaxWidth()[editar]

Indica el ancho máximo en pixeles permitido para el archivo de imagen.

$value (int): ancho en pixeles.

setMaxWidth($value)
$img = Upload::factory('imagen', 'image');
$img->setMaxWidth(200);

setMinHeight()[editar]

Indica el alto mínimo en pixeles permitido para el archivo de imagen.

$value (int): alto en pixeles.

setMinHeight($value)
$img = Upload::factory('imagen', 'image');
$img->setMinHeight(200);

setMaxHeight()[editar]

Indica el alto máximo en pixeles permitido para el archivo de imagen.

$value (int): alto en pixeles.

setMaxHeight($value)
$img = Upload::factory('imagen', 'image');
$img->setMaxHeight(200);

Ejemplo[editar]

En el siguiente ejemplo se muestra un caso donde se desea subir una foto a un servidor.

Modelo foto.php:

/**
 * Modelo para subir fotos
 *
 */

// Carga la libreria Upload
Load::lib('upload');

class Foto
{
    /**
     * Guarda el documento
     *
     * @return boolean
     */
    public function guardar()
    {
        // Instancia con factory un objeto ImageUpload
        $img = Upload::factory('foto', 'image');

        // Verifica si se subió la imagen
        if(!$img->isUploaded()) {
            return FALSE;
        }

        // Tamaño máximo
        $img->setMaxSize('2MB');

        // Tipos de imagenes permitidas
        $img->setTypes(array('jpg', 'png'));

        // Extensiones permitidas
        $img->setExtensions(array('jpg', 'png'));

        // Guarda la imagen
        if($img->save()) {
            Flash::valid('Operación Exitosa');
            return TRUE;
        }

        return FALSE;
    }
}

Controlador foto_controller.php:

class FotoController extends ApplicationController
{
    /**
     * Accion para subir foto
     *
     */
    public function subir()
    {
        $foto = Load::model('foto');
        $foto->guardar();
    }
}

Vista subir.phtml:

<?php View::content() ?>
 
<h1>Subir Foto</h1>
 
<?php echo Form::openMultipart() ?>
   <?php echo Form::file('foto') ?>
   <?php echo Form::submit('Subir') ?>
<?php echo Form::close() ?>

Libreria Session[editar]

A la libreria Session se le modifican sus métodos quedando de la siguiente forma:

Session::set()[editar]

Crear o especifica el valor para un indice de la sesión actual.

$index      Nombre para el indice.
$value      Valor a almacenar.
$namespace  Espacio individual donde se almacenara el indice.

Session::set($index, $value, $namespace='default')
/* Ejemplo */
Session::set('usuario', 'Administrador'); // Genera el indice 'usuario' que contendra 'Administrador'.

Session::get()[editar]

Obtiene el valor para un indice de la sesión actual.

$index      Nombre del indice a obtener.
$namespace  Espacio individual donde se almacena el indice.

Session::get($index, $namespace='default')
/* Ejemplo */
echo Session::get('usuario'); // Pinta 'Administrador'.

Session::delete()[editar]

Elimina el valor para un indice de la sesión actual.

$index      Nombre del indice a eliminar.
$namespace  Espacio individual donde se almacena el indice.

Session::delete($index, $namespace='default')
/* Ejemplo */
Session::delete('usuario'); // Elimina el indice 'usuario'.

Session::has()[editar]

Verifica que este definido el indice en la sesión actual.

$index      Nombre del indice a verificar.
$namespace  Espacio individual donde se almacena el indice.

Session::has($index, $namespace='default')
/* Ejemplo */
Session::has('id_usuario'); // Retorna FALSE.

NOTA: $namespace es un espacio individual en el cual se pueden contener las variables de sesión, permitiendo evitar colisiones con nombres de variables.