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 así como los uses.
4.8.1 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 atributo 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 acción $text texto a mostrar $attrs atributos adicionales Html::link ($action, $text, $attrs = NULL) |
/*Ejemplo*/ echo Html::link(‘pages/show/kumbia/status’,’Configuración’); //se muestra un link con el texto ‘Configuración’ |
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 Html::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()
Incluye imágenes de 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 Html::gravatar($email, $alt=’gravatar’, $size=40, $default=’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()
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 estática que será añadida más adelnate mediante Html::includeMetatags();
$content contenido del metatag $attrs atributos adicionales del tag Html::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 habían 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()
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 dirección url del recurso a enlazar $attrs atributos adicionales Html::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 dirección url del recurso a enlazar $attrs atributos adicionales Html::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 ubicación del recurso en public $attrs atributos adicionales Html::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(); |
4.8.2. Clase Tag
Esta clase nos va a permitir adicionar archivos JS y CSS a nuestro proyecto, bien sean archivos que se encuentren en nuestro servidor o en un servidor externo. También vamos a poder hacer
Las funciones de esta clase son de tipo státicas, lo que nos permite usarlas 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 |
4.8.3. 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*/ |
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 Form::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 Form::input($attrs = NULL, $content = NULL) |
/*Ejemplo*/ echo Form::input(‘nombre’); |
Form::text()
Crea un campo de tipo input
Siempre que se le da el parámetro 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”.
$field Nombre de campo $attrs atributos de campo $value valor inicial para el input Form::text($field, $attrs = NULL, $value = NULL) |
/*Ejemplo*/ echo Form::text(‘nombre’); //crea un campo de tipo texto con el parámetro name= “nombre”, id = “nombre” echo Form::text(‘usuario.nombre’); //crea un campo de tipo texto con el parámetro name= “usuario[nombre]”, id = “usuario.nombre” echo Form::text(‘nombre’,”class= ‘caja'”,’55’); //crea un campo de tipo texto con el parámetro 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 Form::pass($field, $attrs = NULL, $value = NULL) |
/*Ejemplo*/ echo Form::pass(‘password’); //crea un campo de tipo password con el parámetro name= “password” |
Form::textarea()
Crea un textarea
$field nombre de campo $attrs atributos de campo $value valor inicial para el textarea Form::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 Form::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()
Crea un campo hidden (campo oculto)
$field nombre de campo $attrs atributos adicionales de campo $value valor inicial para el campo oculto Form::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 objetos de ActiveRecord, para esta versión del framework el uso de este helper ha sido simplificado. Ya no es necesario instanciar el modelo.
$field nombre del modelo y campo pk (bajo la convención modelo.campo_id) $show campo que se mostrara $data array de valores, array(‘modelo’,’metodo’,’param’) $blank campo en blanco $attrs atributos de campo $value valor inicial para el campo Form::dbSelect($field, $show = NULL, $data = NULL, $blank = NULL, $attrs = NULL, $value = NULL) |
Vista
echo Form::dbSelect(‘usuarios.campo_id’); //la forma más fácil, carga el modelo(campo) y muestra el primer campo después del pk(id) echo Form::dbSelect(‘usuarios.campo_id’, ‘campo’); //muestra el campo y lo ordena ascendentemente |
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 Form::select($field, $data, $attrs = NULL, $value = NULL) |
$ar2 = array(‘Abdomen’,’Brazos’,’Cabeza’,’Cuello’,’Genitales’,’Piernas’,’Tórax’,’Otros’); echo Form::Select(‘region’, $ar2, NULL, ‘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, NULL, ‘Cuello’); |
Resultado:
<select id=”region” name=”region”> <option value=”Abdomen”>Abdomen</option> <option value=”Brazos”>Brazos</option> […] </select> |
Form::file()
Crea campo File para subir archivos, el formulario se debe abrir con Form::openMultipart()
$field nombre de campo $attrs atributos de campo Form::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 Form::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 siguiendo 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 Form::submitImage($img, $attrs = NULL) |
echo Form::submitImage(‘botones/edit.gif’); //Crea un botón con la imagen ‘botones/edit.gif’ |
Form::submit()
Crea un botón de submit para el formulario actual
$text texto del botón $attrs atributos del botón Form::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 Form::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 Form::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 Form::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