https://wiki.kumbiaphp.com/api.php?action=feedcontributions&user=IBet7o&feedformat=atomKumbiaPHP Framework Wiki - Contribuciones del usuario [es]2024-03-29T09:32:30ZContribuciones del usuarioMediaWiki 1.34.1https://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=3144Generar y Leer archivos excel (xls) con KumbiaPHP2011-03-31T15:39:39Z<p>IBet7o: /* Errores Conocidos */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de programación.<br />
<br />
Para implementar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
View::response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos una vista con el nombre ''' sendFile.xls.phtml ''' por que le estamos indicando una salida xls '''View::response('xls')''' en beta2 y en beta1 ''' $this->set_response('xls') '''<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja1->write($row, 0, $usuario->id);<br />
$hoja1->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.<br />
<br />
= Errores Conocidos =<br />
<br />
=== Notice: Uninitialized string offset: 2199023255040 in /../../oleread.inc ===<br />
<br />
La solución es remplazar el contenido de la función '''GetInt4d''' de la siguiente manera.<br />
<br />
<source lang='php'><br />
function GetInt4d($data, $pos){<br />
$_or_24 = ord($data[$pos+3]);<br />
if ($_or_24>=128)<br />
$_ord_24 = -abs((256-$_or_24) << 24);<br />
else<br />
$_ord_24 = ($_or_24&127) << 24;<br />
return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;<br />
}<br />
</source><br />
<br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=3143Generar y Leer archivos excel (xls) con KumbiaPHP2011-03-31T15:39:09Z<p>IBet7o: /* Errores Conocidos */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de programación.<br />
<br />
Para implementar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
View::response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos una vista con el nombre ''' sendFile.xls.phtml ''' por que le estamos indicando una salida xls '''View::response('xls')''' en beta2 y en beta1 ''' $this->set_response('xls') '''<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja1->write($row, 0, $usuario->id);<br />
$hoja1->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.<br />
<br />
= Errores Conocidos =<br />
<br />
=== Notice: Uninitialized string offset: 2199023255040 in /../../oleread.inc ===<br />
<br />
La solución es remplazar el contenido de la función '''GetInt4d''' de la siguiente manera.<br />
<br />
<source lang='php'><br />
function GetInt4d($data, $pos){<br />
$_or_24 = ord($data[$pos+3]);<br />
if ($_or_24>=128)<br />
$_ord_24 = -abs((256-$_or_24) << 24);<br />
else<br />
$_ord_24 = ($_or_24&127) << 24;<br />
return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;<br />
}<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=3142Generar y Leer archivos excel (xls) con KumbiaPHP2011-03-31T15:37:19Z<p>IBet7o: /* Errores Conocidos */</p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de programación.<br />
<br />
Para implementar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
View::response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos una vista con el nombre ''' sendFile.xls.phtml ''' por que le estamos indicando una salida xls '''View::response('xls')''' en beta2 y en beta1 ''' $this->set_response('xls') '''<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja1->write($row, 0, $usuario->id);<br />
$hoja1->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.<br />
<br />
= Errores Conocidos =<br />
<br />
=== Error ===<br />
<br />
*'''Notice: Uninitialized string offset: 2199023255040 in /../../oleread.inc'''<br />
<br />
=== Solución ===<br />
<br />
Remplazar el contenido de la función '''GetInt4d''' de la siguiente manera.<br />
<br />
<source lang='php'><br />
function GetInt4d($data, $pos){<br />
$_or_24 = ord($data[$pos+3]);<br />
if ($_or_24>=128)<br />
$_ord_24 = -abs((256-$_or_24) << 24);<br />
else<br />
$_ord_24 = ($_or_24&127) << 24;<br />
return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;<br />
}<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Generar_y_Leer_archivos_excel_(xls)_con_KumbiaPHP&diff=3141Generar y Leer archivos excel (xls) con KumbiaPHP2011-03-31T15:34:12Z<p>IBet7o: </p>
<hr />
<div>= Creando un archivo excel en KumbiaPHP =<br />
<br />
Esto es un tema sencillo, solo hay que implementar las buenas practicas de programación.<br />
<br />
Para implementar el tema de las 3 capas veamos un ejemplo sencillo<br />
<br />
listado de nombres de usuarios. (id y nombre);<br />
<br />
= Tabla de usuarios =<br />
<br />
<source lang="mysql"><br />
CREATE TABLE `usuarios` (<br />
`id` int(4) NOT NULL AUTO_INCREMENT,<br />
`nombre` varchar(100) NOT NULL,<br />
PRIMARY KEY (`id`)<br />
) ENGINE=InnoDB DEFAULT CHARSET=utf8;<br />
</source><br />
<br />
<br />
= Programación MVC =<br />
<br />
'''Modelo'''<br />
<br />
Creamos nuestro modelo llamado usuarios.php<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Modelo Usuarios<br />
* <br />
* @category app<br />
* @package models<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
class Usuarios extends ActiveRecord{<br />
public function findByName($conditions){<br />
return $this->find("nombre like '$conditions'");<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos un controlador.<br />
<br />
<source lang="php"><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Controlador Usuarios<br />
* <br />
* @category app<br />
* @package controllers<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
Load::lib('excel');<br />
Load::model('usuarios');<br />
class Usuarios extends ApplicationController{<br />
public function sendFile(){<br />
View::response('xls');<br />
$usuarios = new Usuarios();<br />
if(!$this->usuarios = $usuarios->findByName('%')){<br />
Flash::warning('No existen registros para exportar');<br />
$this->render(NULL);<br />
}<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Creamos una vista con el nombre ''' sendFile.xls.phtml ''' por que le estamos indicando una salida xls '''View::response('xls')''' en beta2 y en beta1 ''' $this->set_response('xls') '''<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista sendFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
<br />
//invoco la clase para generar el libro excel<br />
$libro = new Spreadsheet_Excel_Writer();<br />
<br />
//creo una hoja, es decir, puedo crear N hojas<br />
$hoja1 = $libro->addWorksheet("Hoja1");<br />
<br />
//charset<br />
$hoja1->setInputEncoding('utf-8');<br />
<br />
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...<br />
$negrita =& $libro->addFormat();<br />
$negrita->setBold();<br />
<br />
//titulos<br />
$hoja1->write(0, 0, "ID", $negrita);<br />
$hoja1->write(0, 1, "NOMBRE", $negrita);<br />
<br />
//detalle<br />
$row = 1;<br />
foreach($usuarios as $usuario):<br />
$hoja1->write($row, 0, $usuario->id);<br />
$hoja1->write($row, 1, $usuario->nombre);<br />
$row++;<br />
endforeach;<br />
$libro->send("Libro1.xls");<br />
$libro->close();<br />
?><br />
</source><br />
<br />
Con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador ni el modelo.<br />
<br />
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.<br />
<br />
= Importando un archivo excel en KumbiaPHP =<br />
<br />
Esta segunda parte vamos a tomar un archivo similar al que exportamos para poder poblar nuestraba base, aplicaremos la misma libreria.<br />
<br />
la forma de implementar este tema es primero subir el archo xls al servidor, para esto se debe dejar en una carpeta<br />
que tenga acceso de lectura y escritura. despues que el archivo este disponible en el servidor, leeremos el excel y mostraremos los primeros 10 registros, para que el usuario sepa que el archivo que va a importar es el correcto. y con un boton finalizar importremos los datos que se almaceno en memoria (array), yo lo implemento de esta manera por varias razones, y una que es la mas importante, la rapidez, es mas rápido poblar un array en vez estar poblando directo a la base, y una vez que el usuario este conforme poble ese array a la base. También es bueno utilizar las transacciones de la base, por que puede ocurrir un error, y seria bueno hacerlo desde cero, en vez que este buscando cuantos registro quedaron.<br />
<br />
utilizaremos el mismo controller usuarios.<br />
<br />
con el control FILE subimos un archivo al servidor. para esto utilizamos una vista, llama readFile.phtml<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista readFile<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<?php View::content() ?><br />
<?php echo form_tag("$controller_name/$action_name", "enctype: multipart/form-data")?><br />
<table><br />
<tr><br />
<th>ARCHIVO</th><br />
<th>&nbsp;</th><br />
</tr><br />
<tr><br />
<td><?php echo file_field_tag('file') ?></td><br />
<td><?php echo submit_tag('Leer Excel')?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag() ?><br />
</source><br />
<br />
<br />
en el controller con la accion firstStep subimos el excel y creamos el array<br />
<br />
<source lang='php'><br />
/**<br />
* Subimos el archivo excel y creamos un array con los indices<br />
* para ser insertados más tarde en la base<br />
**/<br />
public function firstStep(){<br />
$new_name = "pagos.xls";<br />
$dir = "temp";<br />
if(!$this->upload_file("file",$dir,$new_name)){<br />
Flash::success("Error al intentar de subir el archivo");<br />
}else{<br />
error_reporting(E_ALL ^ E_NOTICE);<br />
Session::unset_data('array_pagos');<br />
$reader = new Spreadsheet_Excel_Reader(); <br />
$reader->setUTFEncoder('UTF8');<br />
$reader->setOutputEncoding('UTF8');<br />
$reader->read("$dir/$new_name");<br />
for ($i = 2; $i <= 65535; $i++){// EMPEZAMOS A LEER DESDE LA SEGUNDA LINEA 'POR QUE LA 1° SON LOS TITULOS'<br />
$array_usuarios[] = array(<br />
'id' => $reader->sheets[0]['cells'][$i][1],<br />
'nombre' => $reader->sheets[0]['cells'][$i][2]<br />
); <br />
$c=$i+1;<br />
if($reader->sheets[0]['cells'][$c][1]=="") $i = 65535; //LEEMOS HASTA EL FINAL, PERO SI ENCUENTRA UN ESPACIO BASIO TERMINA DE LEER<br />
}<br />
Session::set('array_usuarios', $array_usuarios); <br />
}<br />
}<br />
</source><br />
<br />
vista firstStep.phtml, muestra siempre los primeros 10 registros. En una tabla.<br />
<br />
<source lang='php'><br />
<?php<br />
/**<br />
* Generar y Leer archivos excel (xls) con KumbiaPHP<br />
* PHP version 5<br />
* LICENSE<br />
*<br />
*<br />
* Vista firstStep<br />
* @category app<br />
* @package views<br />
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com><br />
*/<br />
?><br />
<br />
<table><br />
<tr><br />
<th>ID</th><br />
<th>NOMBRE</th><br />
</tr><br />
<?php for($i=0;$i<10;$i++){?><br />
<tr><br />
<td><?php echo $array_usuarios[$i]['id'] ?></td><br />
<td><?php echo $array_usuarios[$i]['nombre'] ?></td><br />
</tr><br />
<?php } ?><br />
</table><br />
<?php <br />
echo form_tag("$controller_name/insertArray");<br />
echo submit_tag("Agregar");<br />
echo end_form_tag();<br />
?><br />
</source><br />
<br />
insertamos los datos a la base. <br />
<br />
Controlador usuarios_controller.php<br />
<br />
<source lang='php'><br />
<br />
/**<br />
* invocamos el modelo para que<br />
* insertamos los datos del array a la base de datos<br />
*/<br />
public function insertArray(){<br />
$this->render(NULL);<br />
$usuarios = new Usuarios();<br />
$usuarios->insertArray();<br />
}<br />
</source><br />
<br />
Modelo usuarios.php<br />
<br />
<source lang='php'><br />
/**<br />
* Recorremos el array para insertar en la base.<br />
**/<br />
public function insertArray(){<br />
$array_usuarios = Session::get("array_usuarios");<br />
$tamano = count($array_usuarios);<br />
$this->sql('BEGIN');<br />
for($i=0;$i<$tamano;$i++){<br />
$this->nombre = $array_usuarios[$i]['nombre'];<br />
if(!$this->create()){<br />
Flash::error("Error registro $i");<br />
}<br />
}<br />
$this->sql('COMMIT');<br />
Session::unset_data("array_usuarios");<br />
}<br />
</source><br />
<br />
PD: es mejor utilizar el create en vez del save, cuando uno debe insertar muchos registros el tiempo de respuesta es más rápido.<br />
<br />
== Errores Conocidos ==<br />
<br />
=== Error ===<br />
<br />
*'''Notice: Uninitialized string offset: 2199023255040 in /../../oleread.inc'''<br />
<br />
=== Solución ===<br />
<br />
Remplazar el contenido de la función '''GetInt4d''' de la siguiente manera.<br />
<br />
<source lang='php'><br />
function GetInt4d($data, $pos){<br />
$_or_24 = ord($data[$pos+3]);<br />
if ($_or_24>=128)<br />
$_ord_24 = -abs((256-$_or_24) << 24);<br />
else<br />
$_ord_24 = ($_or_24&127) << 24;<br />
return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | $_ord_24;<br />
}<br />
</source><br />
<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=KumbiaPHP_Framework_Versi%C3%B3n_1.0_Beta2&diff=3072KumbiaPHP Framework Versión 1.0 Beta22011-01-12T19:43:38Z<p>IBet7o: /* Libreria Session */</p>
<hr />
<div>Documentación de KumbiaPHP 1.0 beta2<br />
<br />
<br />
== Migrando de la versión 1.0 Beta1 a Beta2 ==<br />
<br />
La versión 1.0 beta2 trae consigo correcciones y mejoras, nuevos helpers, clases y extensiones que facilitaran aun mas el trabajo.<br />
<br />
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. <br />
<br />
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<br />
<br />
=== Autoload libs (Nuevo) ===<br />
<br />
<br />
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<br />
<br />
==== Como se usa ====<br />
<br />
Como verán se omite la carga de librerías y se crea directamente el objeto<br />
<br />
'''Versión 1.0 beta 1'''<br />
<source lang=php><br />
Load::lib('session');<br />
$var = Session::get('var');</source><br />
<br />
'''Versión 1.0 beta 2'''<br />
<source lang=php>$var = Session::get('var');</source><br />
<br />
<br />
==== ¿Que debo cambiar? ====<br />
<br />
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. <br />
En resumen: eliminar todas las cargas de librerías que se hagan mediante load::lib(''); y boot.ini<br />
<br />
<br />
<br />
=== El Controlador principal cambio de nombre ===<br />
<br />
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 <br />
<br />
¿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<br />
<br />
=== Nuevo árbol de directorios ===<br />
<br />
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í.<br />
<br />
_shared es el directorio 'app/views/_shared' que ahora almacena partials, templates y errors<br />
<br />
Así que en nuestra migración debemos mover los archivos correspondientes a dichos directorios<br />
Ejemplo: 'app/views/partials/menu.phtml' pasara al directorio 'app/views/_shared/partials/menu.phtml'<br />
(pueden ver el ejemplo básico dentro de su app con el partial footer.phtml que se encuentra en dicho directorio)<br />
<br />
== Helpers ==<br />
<br />
=== Clase Html ===<br />
<br />
Clase con métodos estáticos con la que podemos crear etiquetas HTML optimizadas respetando las convenciones de KumbiaPHP.<br />
<br />
<br />
==== Html::img() ====<br />
Permite incluir una imagen<br />
<pre><br />
$src ruta de la imagen<br />
$alt atruibuto alt para la imagen<br />
$attrs atributos adicionales<br />
<br />
img ($src, $alt=NULL, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Html::img('spin.gif','una imagen'); //se muestra la imagen spin.gif que se encuentra dentro de "/public/img/" <br />
//con el artibuto alt 'una imagen'<br />
</source><br />
<br />
<br />
==== Html::link() ====<br />
Permite incluir un link <br />
<pre><br />
$action ruta a la accion<br />
$text texto a mostrar<br />
$attrs atributos adicionales<br />
<br />
link ($action, $text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Html::link('pages/show/kumbia/status','Configuracion'); //se muestra un link con el texto 'Configuracion'<br />
</source><br />
<br />
<br />
==== Html::lists() ====<br />
Crea una lista html a partir de un array<br />
<pre><br />
$array contenido de la lista<br />
$type por defecto ul, y si no ol<br />
$attrs atributos adicionales <br />
<br />
lists($array, $type = 'ul', $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
$ar = array('Abdomen' => 'Abdomen',<br />
'Brazos' => 'Brazos',<br />
'Cabeza' => 'Cabeza',<br />
'Cuello' => 'Cuello',<br />
'Genitales' => 'Genitales',<br />
'Piernas' => 'Piernas',<br />
'Tórax' => 'Tórax',<br />
'Otros' => 'Otros');<br />
//$ar el array que contiene los items de la lista<br />
echo Html::lists($ar, $type = 'ol'); //Muestra una lista <ol></ol><br />
<br />
<br />
$ar2 = array('Abdomen','Brazos','Cabeza','Cuello','Genitales','Piernas','Tórax','Otros');<br />
echo Html::lists($ar2, $type = 'ol'); //Muestra una lista <ol></ol><br />
</source><br />
<br />
<br />
<br />
==== Html::includeCss() ====<br />
Incluye los archivos CSS que previamente fueron cargados a la lista mediante Tag::css()<br />
<br />
<source lang=php><br />
Tag::css('bienvenida'); //Pone en lista un CSS (app/public/css/bienvenida.css)<br />
echo Html::includeCss(); //Adiciona los recursos enlazados de la clase en el proyecto<br />
</source><br />
<br />
<br />
==== Html::meta() ====<br />
Crea un metatag y lo agrega a una lista estatica que sera añadida mas adelnate mediante Html::includeMetatags();<br />
<br />
<pre><br />
$content contenido del metatag<br />
$attrs atributos adicionales del tag<br />
meta($content, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
Html::meta('Kumbiaphp-team',"name = 'Author'"); //Agrega: <meta content="Kumbiaphp-team" name = 'Author'/><br />
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'"); //Agrega: <meta content="text/html; charset=UTF-8" http-equiv = 'Content-type'/> <br />
</source><br />
<br />
<br />
==== Html::includeMetatags() ====<br />
Agrega los metatag que previamente se habia agregado<br />
<br />
<source lang=php><br />
Html::meta('Kumbiaphp-team',"name = 'Author'");<br />
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'");<br />
echo Html::includeMetatags(); //Visualiza <meta content="Kumbiaphp-team" name = 'Author'/><br />
</source><br />
<br />
==== Html::headLink() ====<br />
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())<br />
<br />
<pre><br />
$href direccion url del recurso a enlazar<br />
$attrs atributos adicionales<br />
<br />
headLink($href, $attrs = NULL)<br />
</pre><br />
<br />
<source lang="php" line><br />
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"<br />
<br />
/*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 */<br />
Html::headlink('http://www.kumbiaphp.com/blog/feed/',"rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");<br />
<br />
Html::headlink('http://www.kumbiaphp.com/favicon.ico',"rel='shortcut icon',type='image/x-icon'"); //Agrega la etiqueta <link> para usar un favicon externo<br />
<br />
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola<br />
</source><br />
<br />
==== Html::headLinkAction() ====<br />
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<br />
<br />
<pre><br />
$href direccion url del recurso a enlazar<br />
$attrs atributos adicionales<br />
<br />
headLinkAction($action, $attrs = NULL)<br />
</pre><br />
<br />
<source lang="php" line><br />
<br />
/*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. <br />
Siendo 'articulos/feed' el nombre de la vista con el contenido del feed */<br />
Html::headLinkAction('articulos/feed', "rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");<br />
<br />
<br />
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola<br />
</source><br />
<br />
<br />
<br />
==== Html::headLinkResource() ====<br />
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())<br />
<br />
<pre><br />
$resource ubicacion del recurso en public<br />
$attrs atributos adicionales<br />
<br />
headLinkResource($resource, $attrs = NULL)<br />
</pre><br />
<br />
<source lang="php" line><br />
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/'<br />
<br />
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola<br />
</source><br />
<br />
<br />
<br />
==== Html::includeHeadLinks() ====<br />
Incluye los links que previamente se pusieron en cola<br />
<br />
<source lang=php><br />
<br />
Html::headlink('http://www.kumbiaphp.com/favicon.ico',"rel='shortcut icon',type='image/x-icon'"); //Agrega la etiqueta <link> para usar un favicon externo<br />
<br />
Html::headLinkAction('articulos/feed', "rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");<br />
<br />
echo Html::includeHeadLinks();<br />
</source><br />
<br />
<br />
<br />
<br />
=== '''Clase Tag''' ===<br />
<br />
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 <br />
<br />
Las funciones de esta clase son de tipo static lo que nos permite referenciarlas directamente de la forma como se presentan a continuación.<br />
<br />
==== Tag::css() ====<br />
<br />
Incluye un archivo CSS a la lista<br />
<source lang=php><br />
Tag::css('bienvenida'); //Pone en lista un CSS (app/public/css/bienvenida.css)<br />
echo Html::includeCss(); //Adiciona los recursos enlazados de la clase en el proyecto<br />
</source><br />
<br />
==== Tag::js() ====<br />
Incluye un archivo JavaScript a la vista, partial o template<br />
<source lang=php><br />
<?php echo Tag::js('jquery/jquery.kumbiaphp');?> //Adiciona un archivo javascript (app/public/javascript/jquery/jquery.kumbiaphp)<br />
</source><br />
<br />
=== '''Clase Form''' ===<br />
Clase para el manejo y la creación de formularios<br />
<br />
<br />
==== Form::open() ====<br />
Crea una etiqueta de formulario<br />
<pre><br />
$action acción a la que envía los datos, por defecto llama la misma acción de donde proviene<br />
$method 'POST', 'GET', 'DELETE', 'HEAD', 'PUT'. Por defecto se tiene en 'POST'<br />
$attrs atributos adicionales<br />
<br />
Form::open($action = NULL, $method = 'POST', $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
<?php echo Form::open(); ?>//inicia un formulario que enviara los datos a la acción que corresponde al controller actual<br />
<?php echo Form::open('usuarios/nuevo'); ?> //inicia un formulario que enviara los datos al controller 'usuarios' y la acción 'nuevo'<br />
</source><br />
<br />
==== Form::openMultipart() ====<br />
Crea una etiqueta de formulario multipart, este es ideal para formularios que contienen campos de subida de archivos<br />
<pre><br />
$action acción a la que envía los datos, por defecto llama la misma acción de donde proviene<br />
$attrs atributos adicionales<br />
<br />
openMultipart ($action = NULL, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::openMultipart();//inicia un formulario multipart que enviara los datos a la acción que corresponde a la vista actual<br />
echo Form::openMultipart('usuarios/nuevo');//inicia un formulario multipart que enviara los datos al controller 'usuario' y la acción 'nuevo'<br />
</source><br />
<br />
<br />
<br />
==== Form::close() ====<br />
Crea una etiqueta de cierre de formulario<br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::close();//crea una etiqueta de cierre de formulario </form><br />
</source><br />
<br />
<br />
<br />
==== Form::input() ====<br />
Crea un campo de tipo input<br />
<pre><br />
$attrs atributos para el tag<br />
$content contenido interno<br />
<br />
input($attrs = NULL, $content = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::input('nombre');<br />
</source><br />
<br />
<br />
<br />
==== Form::text() ====<br />
Crea un campo de tipo input<br />
<br />
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")<br />
<pre><br />
$field Nombre de campo<br />
$attrs atributos de campo<br />
$value valor inicial para el input<br />
<br />
text($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::text('nombre'); //crea un campo de tipo texto con el parametro name= "nombre", id = "nombre"<br />
echo Form::text('usuario.nombre'); //crea un campo de tipo texto con el parametro name= "usuario[nombre]", id = "usuario.nombre"<br />
echo Form::text('nombre',"class= 'caja'",'55'); //crea un campo de tipo texto con el parametro name= "nombre", id = "nombre", class= "caja", value = "55"<br />
</source><br />
<br />
<br />
<br />
==== Form::pass() ====<br />
Crea un campo de tipo Password<br />
<pre><br />
$field nombre de campo<br />
$attrs atributos de campo<br />
$value valor inicial para el campo<br />
<br />
pass($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::pass('password'); //crea un campo de tipo password con el parametro name= "password"<br />
</source><br />
<br />
<br />
<br />
==== Form::textarea() ====<br />
Crea un textarea<br />
<pre><br />
$field nombre de campo<br />
$attrs atributos de campo<br />
$value valor inicial para el textarea<br />
<br />
textarea($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::textarea('detalles'); //Crea un textarea <br />
</source><br />
<br />
<br />
<br />
==== Form::label() ====<br />
Crea un label y lo asocia a un campo<br />
<pre><br />
$text texto a mostrar<br />
$field campo al que hace referencia<br />
$attrs array de atributos opcionales<br />
<br />
label($text, $field, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::label('nombre de usuario:','nombre'); //Crea un label para el campo nombre con el texto 'nombre de usuario:'<br />
echo Form::text('nombre');<br />
</source><br />
<br />
<br />
<br />
==== Form::hidden() ====<br />
Crea un campo hidden (campo oculto)<br />
<pre><br />
$field nombre de campo<br />
$attrs atributos adicionales de campo<br />
$value valor inicial para el campo oculto<br />
<br />
hidden($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::hidden('id',null,12); //Crea un campo oculto con el name="id" y el value="12"<br />
</source><br />
<br />
<br />
<br />
==== Form::dbSelect() ====<br />
Crea campo Select que toma los valores de un array de objetos de ActiveRecord<br />
<pre><br />
$field nombre de campo<br />
$data array de valores para la lista desplegable<br />
$show campo que se mostrara<br />
$blank campo en blanco<br />
$attrs atributos de campo<br />
$value valor inicial para el campo<br />
<br />
dbSelect($field, $data, $show, $blank = NULL, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
Controlador<br />
<source lang=php><br />
$usuarios = new Usuarios();<br />
$this->usuarios = $usuarios->find();<br />
</source><br />
<br />
Vista<br />
<source lang=php><br />
echo Form::dbSelect('usuarios.campo_id', $usuarios, 'nombres', '- seleccione -');<br />
</source><br />
<br />
==== Form::select() ====<br />
Crea un campo Select (un combobox)<br />
<pre><br />
$field nombre de campo<br />
$data array de valores para la lista desplegable<br />
$attrs atributos de campo<br />
$value valor inicial para el campo<br />
<br />
select($field, $data, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$ar2 = array('Abdomen','Brazos','Cabeza','Cuello','Genitales','Piernas','Tórax','Otros');<br />
echo Form::Select('region', $ar2,'Cuello'); //Crea un campo Select (un combobox) con el nombre 'region' y teniendo preseleccionado 'Cuello'<br />
</source><br />
Resultado:<br />
<pre><br />
<select id="region" name="region"><br />
<option value="0">Abdomen</option><br />
<option value="1">Brazos</option><br />
[...]<br />
</select><br />
</pre><br />
Otra Posibilidad:<br />
<source lang=php><br />
$ar2 = array('Abdomen'=>'Abdomen','Brazos'=>'Brazos','Cabeza'=>'Cabeza','Cuello'=>'Cuello','Genitales'=>'Genitales','Piernas'=>'Piernas','Tórax'=>'Tórax','Otros'=>'Otros');<br />
echo Form::Select('region', $ar2,'Cuello'); <br />
</source><br />
Resultado:<br />
<pre><br />
<select id="region" name="region"><br />
<option value="Abdomen">Abdomen</option><br />
<option value="Brazos">Brazos</option><br />
[...]<br />
</select><br />
</pre><br />
<br />
==== Form::file() ====<br />
Crea campo File para subir archivos, el formulario se debe abrir con Form::openMultipart()<br />
<pre> <br />
$field nombre de campo<br />
$attrs atributos de campo<br />
<br />
file($field, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::openMultipart(); //Abre el formulario multipart<br />
echo Form::file('subir'); crear el campo para subir archivos<br />
echo Form::close(); //Cierra el formulario<br />
</source><br />
<br />
<br />
==== Form::button() ====<br />
Crea un botón<br />
<pre><br />
$text texto del botón<br />
$attrs atributos del botón<br />
<br />
button($text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::button('calcular'); //Crea un botón con el texto 'calcular'<br />
</source><br />
<br />
<br />
==== Form::submitImage() ====<br />
Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen devera estar dentro del directorio '/public/img/'<br />
<pre><br />
$img ruta de la imagen que usa el botón<br />
$attrs atributos del botón<br />
<br />
submitImage($img, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::submitImage('botones/edit.gif'); //Crea un botón con la imagen 'botones/edit.gif'<br />
</source><br />
<br />
<br />
==== Form::submit() ====<br />
Crea un boton de submit para el formulario actual<br />
<pre><br />
$text texto del botón<br />
$attrs atributos del botón<br />
<br />
submit($text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::submit('enviar'); //Crea un botón con el texto 'enviar'<br />
</source><br />
<br />
<br />
==== Form::reset() ====<br />
Crea un botón reset para el formulario actual<br />
<pre><br />
$text texto del botón<br />
$attrs atributos del botón<br />
<br />
reset($text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::reset('reiniciar'); //Crea un botón con el texto 'reiniciar'<br />
</source><br />
<br />
<br />
==== Form::check() ====<br />
Crea un checkbox<br />
<pre><br />
$field nombre de campo<br />
$value valor en el checkbox<br />
$attrs atributos de campo<br />
$checked indica si se marca el campo<br />
<br />
check($field, $value, $attrs = NULL, $checked = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::check('recuerdame','1','',true); // Crea un check seleccionado con id="recuerdame" , name="recuerdame" y value="1" <br />
echo Form::check('recuerdame','1','',false); // Crea un check NO seleccionado con id="recuerdame" , name="recuerdame" y value="1" <br />
<br />
</source><br />
<br />
==== Form::radio() ====<br />
Crea un radio button<br />
<pre><br />
$field nombre de campo<br />
$value valor en el radio<br />
$attrs atributos de campo<br />
$checked indica si se marca el campo<br />
<br />
radio($field, $value, $attrs = NULL, $checked = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$on = 'masculino';<br />
echo Form::radio("rdo", 'masculino', NULL, TRUE); //<input id="rdo1" name="rdo" type="radio" value="masculino" checked="checked"><br />
echo Form::radio("rdo", 'femenino'); //<input id="rdo2" name="rdo" type="radio" value="femenino"><br />
</source><br />
<br />
<br />
<br />
----<br />
<br />
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]]<br />
<br />
== Libreria Upload ==<br />
<br />
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. <br />
<br />
=== factory() ===<br />
Este metodo permite obtener un objeto Upload correspondiente al adaptador requerido. Los argumentos que acepta son los siguientes:<br />
<br />
<pre><br />
$name (string): el nombre del campo correspondiente al archivo en el formulario.<br />
$adapter (string): adaptador para upload (file, image)<br />
<br />
factory($name, $adapter = 'file')<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
</source><br />
<br />
<br />
<br />
<br />
<br />
=== Ejemplo simple ===<br />
Se presenta un ejemplo simple de uso de la libreria Upload.<br />
<br />
Modelo '''archivador.php''':<br />
<br />
<source lang=php><br />
class Archivador<br />
{<br />
/**<br />
* Guardar archivo<br />
*<br />
* @return boolean<br />
*/<br />
public static function guardar()<br />
{<br />
$file = Upload::factory('archivo');<br />
<br />
// Guarda el archivo en el directorio "public/files/upload"<br />
if($file->save()) {<br />
Flash::valid('Operación Exitosa');<br />
return TRUE;<br />
}<br />
<br />
return FALSE;<br />
}<br />
}<br />
</source><br />
<br />
Controlador '''archivador_controller.php''':<br />
<br />
<source lang=php><br />
class ArchivadorController extends ApplicationController<br />
{<br />
/**<br />
* Accion para subir archivo<br />
*<br />
*/<br />
public function subir()<br />
{<br />
$archivador = Load::model('archivador');<br />
$archivador->guardar();<br />
}<br />
}<br />
</source><br />
<br />
En la vista '''subir.phtml''':<br />
<br />
<source lang=php><br />
<?php View::content() ?><br />
<br />
<h1>Subir Archivo</h1><br />
<br />
<?php echo Form::openMultipart() ?><br />
<?php echo Form::file('archivo') ?><br />
<?php echo Form::submit('Subir') ?><br />
<?php echo Form::close() ?><br />
</source><br />
<br />
=== Adaptador File ===<br />
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:<br />
<br />
==== save() ====<br />
Guarda el archivo subido.<br />
<br />
<pre><br />
$name (string): nombre con el que se guardará el archivo, por defecto se guarda con su nombre original.<br />
<br />
Retorna (boolean).<br />
<br />
save($name = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Guarda el archivo<br />
$file->save();<br />
</source><br />
<br />
==== saveRandom() ====<br />
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.<br />
<br />
<pre><br />
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.<br />
<br />
saveRandom()<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Guarda el archivo<br />
$fileName = $file->saveRandom();<br />
</source><br />
<br />
<br />
==== isUploaded() ====<br />
Verifica si el archivo esta subido de manera que posteriormente se pueda guardar.<br />
<br />
<pre><br />
Retorna (boolean).<br />
<br />
isUploaded()<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
if($file->isUploaded()) {<br />
echo 'Archivo listo para guardarse';<br />
}<br />
</source><br />
<br />
==== setPath() ====<br />
Asigna la ruta al directorio de destino para el archivo. Por defecto se considera '''public/files/upload'''.<br />
<br />
<pre><br />
$path (string): ruta de destino<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Nueva ruta de destino<br />
$file->setPath(APP_PATH . 'temp/archivos');<br />
</source><br />
<br />
==== setAllowScripts() ====<br />
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.<br />
<br />
<pre><br />
$value (boolean): indica si se permite subir o no scripts.<br />
<br />
setAllowScripts($value)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Esto se hace bajo propio riesgo.<br />
$file->setAllowScripts(TRUE);<br />
</source><br />
<br />
==== setMinSize() ====<br />
Indica el tamaño mínimo permitido para el archivo.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMinSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
$file->setMinSize('0.3 MB');<br />
</source><br />
<br />
==== setMaxSize() ====<br />
Indica el tamaño máximo permitido para el archivo.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMaxSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
$file->setMaxSize('1 MB');<br />
</source><br />
<br />
==== setTypes() ====<br />
Indica los tipos de archivos permitidos.<br />
<br />
<pre><br />
$value (array): lista de tipos de archivos permitidos según estándar MIME. Ejemplo: "text/plain".<br />
<br />
setTypes($value)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Documentos de texto<br />
$file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));<br />
</source><br />
<br />
==== setExtensions() ====<br />
Indica las extensiones de archivos permitidas.<br />
<br />
<pre><br />
$value (array): lista de extensiones para archivos. Ejemplo: "png".<br />
<br />
setExtensions($value)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Documentos de texto<br />
$file->setExtensions(array('txt', 'dot', 'doc'));<br />
</source><br />
<br />
==== Ejemplo ====<br />
En el siguiente ejemplo se muestra un caso donde se desea subir archivos de texto al servidor.<br />
<br />
Modelo '''documento.php''':<br />
<br />
<source lang=php><br />
/**<br />
* Modelo para subir documentos de texto<br />
*<br />
*/<br />
<br />
// Carga la libreria Upload<br />
Load::lib('upload');<br />
<br />
class Documento<br />
{<br />
/**<br />
* Guarda el documento<br />
*<br />
* @return boolean<br />
*/<br />
public function guardar()<br />
{<br />
// Instancia con factory un objeto FileUpload<br />
$file = Upload::factory('documento');<br />
<br />
// Verifica si se subió el documento<br />
if(!$file->isUploaded()) {<br />
return FALSE;<br />
}<br />
<br />
// Tamaño máximo<br />
$file->setMaxSize('2MB');<br />
<br />
// Tipos de archivos permitidos<br />
$file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));<br />
<br />
// Extensiones permitidas<br />
$file->setExtensions(array('txt', 'dot', 'doc'));<br />
<br />
// Guarda el archivo<br />
if($file->save()) {<br />
Flash::valid('Operación Exitosa');<br />
return TRUE;<br />
}<br />
<br />
return FALSE;<br />
}<br />
}<br />
</source><br />
<br />
Controlador '''documento_controller.php''':<br />
<br />
<source lang=php><br />
class DocumentoController extends ApplicationController<br />
{<br />
/**<br />
* Accion para subir documento<br />
*<br />
*/<br />
public function subir()<br />
{<br />
$documento = Load::model('documento');<br />
$documento->guardar();<br />
}<br />
}<br />
</source><br />
<br />
Vista '''subir.phtml''':<br />
<br />
<source lang=php><br />
<?php View::content() ?><br />
<br />
<h1>Subir Documento</h1><br />
<br />
<?php echo Form::openMultipart() ?><br />
<?php echo Form::file('documento') ?><br />
<?php echo Form::submit('Subir') ?><br />
<?php echo Form::close() ?><br />
</source><br />
<br />
=== Adaptador Image ===<br />
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:<br />
<br />
==== save() ====<br />
Guarda el archivo subido.<br />
<br />
<pre><br />
$name (string): nombre con el que se guardará el archivo de imagen, por defecto se guarda con su nombre original.<br />
<br />
Retorna (boolean).<br />
<br />
save($name = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Guarda la imagen<br />
$img->save();<br />
</source><br />
<br />
==== saveRandom() ====<br />
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.<br />
<br />
<pre><br />
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.<br />
<br />
saveRandom()<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Guarda el archivo<br />
$fileName = $img->saveRandom();<br />
</source><br />
<br />
<br />
==== isUploaded() ====<br />
Verifica si el archivo de imagen esta subido de manera que posteriormente se pueda guardar.<br />
<br />
<pre><br />
Retorna (boolean).<br />
<br />
isUploaded()<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
if($img->isUploaded()) {<br />
echo 'Archivo listo para guardarse';<br />
}<br />
</source><br />
<br />
==== setPath() ====<br />
Asigna la ruta al directorio de destino para el archivo de imagen. Por defecto se considera '''public/img/upload'''.<br />
<br />
<pre><br />
$path (string): ruta de destino<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Nueva ruta de destino<br />
$img->setPath(APP_PATH . 'temp/fotos');<br />
</source><br />
<br />
==== setAllowScripts() ====<br />
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.<br />
<br />
<pre><br />
$value (boolean): indica si se permite subir o no scripts.<br />
<br />
setAllowScripts($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Esto se hace bajo propio riesgo.<br />
$img->setAllowScripts(TRUE);<br />
</source><br />
<br />
==== setMinSize() ====<br />
Indica el tamaño mínimo permitido para el archivo de imagen.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMinSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMinSize('0.3 MB');<br />
</source><br />
<br />
==== setMaxSize() ====<br />
Indica el tamaño máximo permitido para el archivo.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMaxSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMaxSize('1 MB');<br />
</source><br />
<br />
==== setTypes() ====<br />
Indica los tipos de archivos de imagen permitidos.<br />
<br />
<pre><br />
$value (array): lista de tipos de archivos de imagen permitidos según estándar MIME. Ejemplo: "jpg".<br />
<br />
setTypes($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Archivos de imágenes<br />
// Para una mayor referencia del estándar MIME: http://www.w3schools.com/media/media_mimeref.asp<br />
$img->setTypes(array('jpeg', 'gif', 'png'));<br />
</source><br />
<br />
==== setExtensions() ====<br />
Indica las extensiones de archivos permitidas.<br />
<br />
<pre><br />
$value (array): lista de extensiones para archivos. Ejemplo: "png".<br />
<br />
setExtensions($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Formatos de Imagenes<br />
$img->setExtensions(array('jpg', 'gif', 'png'));<br />
<br />
</source><br />
<br />
==== setMinWidth() ====<br />
Indica el ancho mínimo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): ancho en pixeles.<br />
<br />
setMinWidth($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMinWidth(200);<br />
</source><br />
<br />
==== setMaxWidth() ====<br />
Indica el ancho máximo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): ancho en pixeles.<br />
<br />
setMaxWidth($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMaxWidth(200);<br />
</source><br />
<br />
==== setMinHeight() ====<br />
Indica el alto mínimo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): alto en pixeles.<br />
<br />
setMinHeight($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMinHeight(200);<br />
</source><br />
<br />
==== setMaxHeight() ====<br />
Indica el alto máximo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): alto en pixeles.<br />
<br />
setMaxHeight($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMaxHeight(200);<br />
</source><br />
<br />
==== Ejemplo ====<br />
En el siguiente ejemplo se muestra un caso donde se desea subir una foto a un servidor.<br />
<br />
Modelo '''foto.php''':<br />
<br />
<source lang=php><br />
/**<br />
* Modelo para subir fotos<br />
*<br />
*/<br />
<br />
// Carga la libreria Upload<br />
Load::lib('upload');<br />
<br />
class Foto<br />
{<br />
/**<br />
* Guarda el documento<br />
*<br />
* @return boolean<br />
*/<br />
public function guardar()<br />
{<br />
// Instancia con factory un objeto ImageUpload<br />
$img = Upload::factory('foto', 'image');<br />
<br />
// Verifica si se subió la imagen<br />
if(!$img->isUploaded()) {<br />
return FALSE;<br />
}<br />
<br />
// Tamaño máximo<br />
$img->setMaxSize('2MB');<br />
<br />
// Tipos de imagenes permitidas<br />
$img->setTypes(array('jpg', 'png'));<br />
<br />
// Extensiones permitidas<br />
$img->setExtensions(array('jpg', 'png'));<br />
<br />
// Guarda la imagen<br />
if($img->save()) {<br />
Flash::valid('Operación Exitosa');<br />
return TRUE;<br />
}<br />
<br />
return FALSE;<br />
}<br />
}<br />
</source><br />
<br />
Controlador '''foto_controller.php''':<br />
<br />
<source lang=php><br />
class FotoController extends ApplicationController<br />
{<br />
/**<br />
* Accion para subir foto<br />
*<br />
*/<br />
public function subir()<br />
{<br />
$foto = Load::model('foto');<br />
$foto->guardar();<br />
}<br />
}<br />
</source><br />
<br />
Vista '''subir.phtml''':<br />
<br />
<source lang=php><br />
<?php View::content() ?><br />
<br />
<h1>Subir Foto</h1><br />
<br />
<?php echo Form::openMultipart() ?><br />
<?php echo Form::file('foto') ?><br />
<?php echo Form::submit('Subir') ?><br />
<?php echo Form::close() ?><br />
</source><br />
<br />
== Libreria Session ==<br />
<br />
A la libreria Session se le modifican sus métodos quedando de la siguiente forma:<br />
<br />
=== Session::set() ===<br />
Crear o especifica el valor para un indice de la sesión actual.<br />
<br />
<pre><br />
$index Nombre para el indice.<br />
$value Valor a almacenar.<br />
$namespace Espacio individual donde se almacenara el indice.<br />
<br />
Session::set($index, $value, $namespace='default')<br />
</pre><br />
<br />
<source lang=php><br />
/* Ejemplo */<br />
Session::set('usuario', 'Administrador'); // Genera el indice 'usuario' que contendra 'Administrador'.<br />
</source><br />
<br />
=== Session::get() ===<br />
Obtiene el valor para un indice de la sesión actual.<br />
<br />
<pre><br />
$index Nombre del indice a obtener.<br />
$namespace Espacio individual donde se almacena el indice.<br />
<br />
Session::get($index, $namespace='default')<br />
</pre><br />
<br />
<source lang=php><br />
/* Ejemplo */<br />
echo Session::get('usuario'); // Pinta 'Administrador'.<br />
</source><br />
<br />
=== Session::delete() ===<br />
Elimina el valor para un indice de la sesión actual.<br />
<br />
<pre><br />
$index Nombre del indice a eliminar.<br />
$namespace Espacio individual donde se almacena el indice.<br />
<br />
Session::delete($index, $namespace='default')<br />
</pre><br />
<br />
<source lang=php><br />
/* Ejemplo */<br />
Session::delete('usuario'); // Elimina el indice 'usuario'.<br />
</source><br />
<br />
=== Session::has() ===<br />
Verifica que este definido el indice en la sesión actual.<br />
<br />
<pre><br />
$index Nombre del indice a verificar.<br />
$namespace Espacio individual donde se almacena el indice.<br />
<br />
Session::has($index, $namespace='default')<br />
</pre><br />
<br />
<source lang=php><br />
/* Ejemplo */<br />
Session::has('id_usuario'); // Retorna FALSE.<br />
</source><br />
<br />
NOTA: '''$namespace''' es un espacio individual en el cual se pueden contener las variables de sesión, permitiendo evitar colisiones con nombres de variables.</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=KumbiaPHP_Framework_Versi%C3%B3n_1.0_Beta2&diff=3052KumbiaPHP Framework Versión 1.0 Beta22011-01-12T01:26:08Z<p>IBet7o: </p>
<hr />
<div>Documentación de KumbiaPHP 1.0 beta2<br />
<br />
<br />
== Migrando de la versión 1.0 Beta1 a Beta2 ==<br />
<br />
La versión 1.0 beta2 trae consigo correcciones y mejoras, nuevos helpers, clases y extensiones que facilitaran aun mas el trabajo.<br />
<br />
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. <br />
<br />
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<br />
<br />
=== Autoload libs (Nuevo) ===<br />
<br />
<br />
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<br />
<br />
==== Como se usa ====<br />
<br />
Como verán se omite la carga de librerías y se crea directamente el objeto<br />
<br />
'''Versión 1.0 beta 1'''<br />
<source lang=php><br />
Load::lib('session');<br />
$var = Session::get('var');</source><br />
<br />
'''Versión 1.0 beta 2'''<br />
<source lang=php>$var = Session::get('var');</source><br />
<br />
<br />
==== ¿Que debo cambiar? ====<br />
<br />
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. <br />
En resumen: eliminar todas las cargas de librerías que se hagan mediante load::lib(''); y boot.ini<br />
<br />
<br />
<br />
=== El Controlador principal cambio de nombre ===<br />
<br />
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 <br />
<br />
¿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<br />
<br />
=== Nuevo árbol de directorios ===<br />
<br />
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í.<br />
<br />
_shared es el directorio 'app/views/_shared' que ahora almacena partials, templates y errors<br />
<br />
Así que en nuestra migración debemos mover los archivos correspondientes a dichos directorios<br />
Ejemplo: 'app/views/partials/menu.phtml' pasara al directorio 'app/views/_shared/partials/menu.phtml'<br />
(pueden ver el ejemplo básico dentro de su app con el partial footer.phtml que se encuentra en dicho directorio)<br />
<br />
== Helpers ==<br />
<br />
=== Clase Html ===<br />
<br />
Clase con métodos estáticos con la que podemos crear etiquetas HTML optimizadas respetando las convenciones de KumbiaPHP.<br />
<br />
<br />
==== Html::img() ====<br />
Permite incluir una imagen<br />
<pre><br />
$src ruta de la imagen<br />
$alt atruibuto alt para la imagen<br />
$attrs atributos adicionales<br />
<br />
img ($src, $alt=NULL, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Html::img('spin.gif','una imagen'); //se muestra la imagen spin.gif que se encuentra dentro de "/public/img/" <br />
//con el artibuto alt 'una imagen'<br />
</source><br />
<br />
<br />
==== Html::link() ====<br />
Permite incluir un link <br />
<pre><br />
$action ruta a la accion<br />
$text texto a mostrar<br />
$attrs atributos adicionales<br />
<br />
link ($action, $text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Html::link('pages/show/kumbia/status','Configuracion'); //se muestra un link con el texto 'Configuracion'<br />
</source><br />
<br />
<br />
==== Html::lists() ====<br />
Crea una lista html a partir de un array<br />
<pre><br />
$array contenido de la lista<br />
$type por defecto ul, y si no ol<br />
$attrs atributos adicionales <br />
<br />
lists($array, $type = 'ul', $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
$ar = array('Abdomen' => 'Abdomen',<br />
'Brazos' => 'Brazos',<br />
'Cabeza' => 'Cabeza',<br />
'Cuello' => 'Cuello',<br />
'Genitales' => 'Genitales',<br />
'Piernas' => 'Piernas',<br />
'Tórax' => 'Tórax',<br />
'Otros' => 'Otros');<br />
//$ar el array que contiene los items de la lista<br />
echo Html::lists($ar, $type = 'ol'); //Muestra una lista <ol></ol><br />
<br />
<br />
$ar2 = array('Abdomen','Brazos','Cabeza','Cuello','Genitales','Piernas','Tórax','Otros');<br />
echo Html::lists($ar2, $type = 'ol'); //Muestra una lista <ol></ol><br />
</source><br />
<br />
<br />
<br />
==== Html::includeCss() ====<br />
Incluye los archivos CSS que previamente fueron cargados a la lista mediante Tag::css()<br />
<br />
<source lang=php><br />
Tag::css('bienvenida'); //Pone en lista un CSS (app/public/css/bienvenida.css)<br />
echo Html::includeCss(); //Adiciona los recursos enlazados de la clase en el proyecto<br />
</source><br />
<br />
<br />
==== Html::meta() ====<br />
Crea un metatag y lo agrega a una lista estatica que sera añadida mas adelnate mediante Html::includeMetatags();<br />
<br />
<pre><br />
$content contenido del metatag<br />
$attrs atributos adicionales del tag<br />
meta($content, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
Html::meta('Kumbiaphp-team',"name = 'Author'"); //Agrega: <meta content="Kumbiaphp-team" name = 'Author'/><br />
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'"); //Agrega: <meta content="text/html; charset=UTF-8" http-equiv = 'Content-type'/> <br />
</source><br />
<br />
<br />
==== Html::includeMetatags() ====<br />
Agrega los metatag que previamente se habia agregado<br />
<br />
<source lang=php><br />
Html::meta('Kumbiaphp-team',"name = 'Author'");<br />
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'");<br />
echo Html::includeMetatags(); //Visualiza <meta content="Kumbiaphp-team" name = 'Author'/><br />
</source><br />
<br />
==== Html::headLink() ====<br />
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())<br />
<br />
<pre><br />
$href direccion url del recurso a enlazar<br />
$attrs atributos adicionales<br />
<br />
headLink($href, $attrs = NULL)<br />
</pre><br />
<br />
<source lang="php" line><br />
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"<br />
<br />
/*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 */<br />
Html::headlink('http://www.kumbiaphp.com/blog/feed/',"rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");<br />
<br />
Html::headlink('http://www.kumbiaphp.com/favicon.ico',"rel='shortcut icon',type='image/x-icon'"); //Agrega la etiqueta <link> para usar un favicon externo<br />
<br />
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola<br />
</source><br />
<br />
==== Html::headLinkAction() ====<br />
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<br />
<br />
<pre><br />
$href direccion url del recurso a enlazar<br />
$attrs atributos adicionales<br />
<br />
headLinkAction($action, $attrs = NULL)<br />
</pre><br />
<br />
<source lang="php" line><br />
<br />
/*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. <br />
Siendo 'articulos/feed' el nombre de la vista con el contenido del feed */<br />
Html::headLinkAction('articulos/feed', "rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");<br />
<br />
<br />
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola<br />
</source><br />
<br />
<br />
<br />
==== Html::headLinkResource() ====<br />
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())<br />
<br />
<pre><br />
$resource ubicacion del recurso en public<br />
$attrs atributos adicionales<br />
<br />
headLinkResource($resource, $attrs = NULL)<br />
</pre><br />
<br />
<source lang="php" line><br />
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/'<br />
<br />
echo Html::includeHeadLinks(); //Muestra los links que contiene la cola<br />
</source><br />
<br />
<br />
<br />
==== Html::includeHeadLinks() ====<br />
Incluye los links que previamente se pusieron en cola<br />
<br />
<source lang=php><br />
<br />
Html::headlink('http://www.kumbiaphp.com/favicon.ico',"rel='shortcut icon',type='image/x-icon'"); //Agrega la etiqueta <link> para usar un favicon externo<br />
<br />
Html::headLinkAction('articulos/feed', "rel='alternate' type='application/rss+xml' title='KumbiaPHP Framework RSS Feed'");<br />
<br />
echo Html::includeHeadLinks();<br />
</source><br />
<br />
<br />
<br />
<br />
=== '''Clase Tag''' ===<br />
<br />
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 <br />
<br />
Las funciones de esta clase son de tipo static lo que nos permite referenciarlas directamente de la forma como se presentan a continuación.<br />
<br />
==== Tag::css() ====<br />
<br />
Incluye un archivo CSS a la lista<br />
<source lang=php><br />
Tag::css('bienvenida'); //Pone en lista un CSS (app/public/css/bienvenida.css)<br />
echo Html::includeCss(); //Adiciona los recursos enlazados de la clase en el proyecto<br />
</source><br />
<br />
==== Tag::js() ====<br />
Incluye un archivo JavaScript a la vista, partial o template<br />
<source lang=php><br />
<?php echo Tag::js('jquery/jquery.kumbiaphp');?> //Adiciona un archivo javascript (app/public/javascript/jquery/jquery.kumbiaphp)<br />
</source><br />
<br />
=== '''Clase Form''' ===<br />
Clase para el manejo y la creación de formularios<br />
<br />
<br />
==== Form::open() ====<br />
Crea una etiqueta de formulario<br />
<pre><br />
$action acción a la que envía los datos, por defecto llama la misma acción de donde proviene<br />
$method 'POST', 'GET', 'DELETE', 'HEAD', 'PUT'. Por defecto se tiene en 'POST'<br />
$attrs atributos adicionales<br />
<br />
Form::open($action = NULL, $method = 'POST', $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
<?php echo Form::open(); ?>//inicia un formulario que enviara los datos a la acción que corresponde al controller actual<br />
<?php echo Form::open('usuarios/nuevo'); ?> //inicia un formulario que enviara los datos al controller 'usuarios' y la acción 'nuevo'<br />
</source><br />
<br />
==== Form::openMultipart() ====<br />
Crea una etiqueta de formulario multipart, este es ideal para formularios que contienen campos de subida de archivos<br />
<pre><br />
$action acción a la que envía los datos, por defecto llama la misma acción de donde proviene<br />
$attrs atributos adicionales<br />
<br />
openMultipart ($action = NULL, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::openMultipart();//inicia un formulario multipart que enviara los datos a la acción que corresponde a la vista actual<br />
echo Form::openMultipart('usuarios/nuevo');//inicia un formulario multipart que enviara los datos al controller 'usuario' y la acción 'nuevo'<br />
</source><br />
<br />
<br />
<br />
==== Form::close() ====<br />
Crea una etiqueta de cierre de formulario<br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::close();//crea una etiqueta de cierre de formulario </form><br />
</source><br />
<br />
<br />
<br />
==== Form::input() ====<br />
Crea un campo de tipo input<br />
<pre><br />
$attrs atributos para el tag<br />
$content contenido interno<br />
<br />
input($attrs = NULL, $content = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::input('nombre');<br />
</source><br />
<br />
<br />
<br />
==== Form::text() ====<br />
Crea un campo de tipo input<br />
<br />
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")<br />
<pre><br />
$field Nombre de campo<br />
$attrs atributos de campo<br />
$value valor inicial para el input<br />
<br />
text($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::text('nombre'); //crea un campo de tipo texto con el parametro name= "nombre", id = "nombre"<br />
echo Form::text('usuario.nombre'); //crea un campo de tipo texto con el parametro name= "usuario[nombre]", id = "usuario.nombre"<br />
echo Form::text('nombre',"class= 'caja'",'55'); //crea un campo de tipo texto con el parametro name= "nombre", id = "nombre", class= "caja", value = "55"<br />
</source><br />
<br />
<br />
<br />
==== Form::pass() ====<br />
Crea un campo de tipo Password<br />
<pre><br />
$field nombre de campo<br />
$attrs atributos de campo<br />
$value valor inicial para el campo<br />
<br />
pass($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
/*Ejemplo*/<br />
echo Form::pass('password'); //crea un campo de tipo password con el parametro name= "password"<br />
</source><br />
<br />
<br />
<br />
==== Form::textarea() ====<br />
Crea un textarea<br />
<pre><br />
$field nombre de campo<br />
$attrs atributos de campo<br />
$value valor inicial para el textarea<br />
<br />
textarea($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::textarea('detalles'); //Crea un textarea <br />
</source><br />
<br />
<br />
<br />
==== Form::label() ====<br />
Crea un label y lo asocia a un campo<br />
<pre><br />
$text texto a mostrar<br />
$field campo al que hace referencia<br />
$attrs array de atributos opcionales<br />
<br />
label($text, $field, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::label('nombre de usuario:','nombre'); //Crea un label para el campo nombre con el texto 'nombre de usuario:'<br />
echo Form::text('nombre');<br />
</source><br />
<br />
<br />
<br />
==== Form::hidden() ====<br />
Crea un campo hidden (campo oculto)<br />
<pre><br />
$field nombre de campo<br />
$attrs atributos adicionales de campo<br />
$value valor inicial para el campo oculto<br />
<br />
hidden($field, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::hidden('id',null,12); //Crea un campo oculto con el name="id" y el value="12"<br />
</source><br />
<br />
<br />
<br />
==== Form::dbSelect() ====<br />
Crea campo Select que toma los valores de un array de objetos de ActiveRecord<br />
<pre><br />
$field nombre de campo<br />
$data array de valores para la lista desplegable<br />
$show campo que se mostrara<br />
$blank campo en blanco<br />
$attrs atributos de campo<br />
$value valor inicial para el campo<br />
<br />
dbSelect($field, $data, $show, $blank = NULL, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
Controlador<br />
<source lang=php><br />
$usuarios = new Usuarios();<br />
$this->usuarios = $usuarios->find();<br />
</source><br />
<br />
Vista<br />
<source lang=php><br />
echo Form::dbSelect('usuarios.campo_id', $usuarios, 'nombres', '- seleccione -');<br />
</source><br />
<br />
==== Form::select() ====<br />
Crea un campo Select (un combobox)<br />
<pre><br />
$field nombre de campo<br />
$data array de valores para la lista desplegable<br />
$attrs atributos de campo<br />
$value valor inicial para el campo<br />
<br />
select($field, $data, $attrs = NULL, $value = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$ar2 = array('Abdomen','Brazos','Cabeza','Cuello','Genitales','Piernas','Tórax','Otros');<br />
echo Form::Select('region', $ar2,'Cuello'); //Crea un campo Select (un combobox) con el nombre 'region' y teniendo preseleccionado 'Cuello'<br />
</source><br />
Resultado:<br />
<pre><br />
<select id="region" name="region"><br />
<option value="0">Abdomen</option><br />
<option value="1">Brazos</option><br />
[...]<br />
</select><br />
</pre><br />
Otra Posibilidad:<br />
<source lang=php><br />
$ar2 = array('Abdomen'=>'Abdomen','Brazos'=>'Brazos','Cabeza'=>'Cabeza','Cuello'=>'Cuello','Genitales'=>'Genitales','Piernas'=>'Piernas','Tórax'=>'Tórax','Otros'=>'Otros');<br />
echo Form::Select('region', $ar2,'Cuello'); <br />
</source><br />
Resultado:<br />
<pre><br />
<select id="region" name="region"><br />
<option value="Abdomen">Abdomen</option><br />
<option value="Brazos">Brazos</option><br />
[...]<br />
</select><br />
</pre><br />
<br />
==== Form::file() ====<br />
Crea campo File para subir archivos, el formulario se debe abrir con Form::openMultipart()<br />
<pre> <br />
$field nombre de campo<br />
$attrs atributos de campo<br />
<br />
file($field, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::openMultipart(); //Abre el formulario multipart<br />
echo Form::file('subir'); crear el campo para subir archivos<br />
echo Form::close(); //Cierra el formulario<br />
</source><br />
<br />
<br />
==== Form::button() ====<br />
Crea un botón<br />
<pre><br />
$text texto del botón<br />
$attrs atributos del botón<br />
<br />
button($text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::button('calcular'); //Crea un botón con el texto 'calcular'<br />
</source><br />
<br />
<br />
==== Form::submitImage() ====<br />
Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen devera estar dentro del directorio '/public/img/'<br />
<pre><br />
$img ruta de la imagen que usa el botón<br />
$attrs atributos del botón<br />
<br />
submitImage($img, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::submitImage('botones/edit.gif'); //Crea un botón con la imagen 'botones/edit.gif'<br />
</source><br />
<br />
<br />
==== Form::submit() ====<br />
Crea un boton de submit para el formulario actual<br />
<pre><br />
$text texto del botón<br />
$attrs atributos del botón<br />
<br />
submit($text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::submit('enviar'); //Crea un botón con el texto 'enviar'<br />
</source><br />
<br />
<br />
==== Form::reset() ====<br />
Crea un botón reset para el formulario actual<br />
<pre><br />
$text texto del botón<br />
$attrs atributos del botón<br />
<br />
reset($text, $attrs = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::reset('reiniciar'); //Crea un botón con el texto 'reiniciar'<br />
</source><br />
<br />
<br />
==== Form::check() ====<br />
Crea un checkbox<br />
<pre><br />
$field nombre de campo<br />
$value valor en el checkbox<br />
$attrs atributos de campo<br />
$checked indica si se marca el campo<br />
<br />
check($field, $value, $attrs = NULL, $checked = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
echo Form::check('recuerdame','1','',true); // Crea un check seleccionado con id="recuerdame" , name="recuerdame" y value="1" <br />
echo Form::check('recuerdame','1','',false); // Crea un check NO seleccionado con id="recuerdame" , name="recuerdame" y value="1" <br />
<br />
</source><br />
<br />
==== Form::radio() ====<br />
Crea un radio button<br />
<pre><br />
$field nombre de campo<br />
$value valor en el radio<br />
$attrs atributos de campo<br />
$checked indica si se marca el campo<br />
<br />
radio($field, $value, $attrs = NULL, $checked = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$on = 'masculino';<br />
echo Form::radio("rdo", 'masculino', NULL, TRUE); //<input id="rdo1" name="rdo" type="radio" value="masculino" checked="checked"><br />
echo Form::radio("rdo", 'femenino'); //<input id="rdo2" name="rdo" type="radio" value="femenino"><br />
</source><br />
<br />
<br />
<br />
----<br />
<br />
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]]<br />
<br />
== Libreria Upload ==<br />
<br />
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. <br />
<br />
=== factory() ===<br />
Este metodo permite obtener un objeto Upload correspondiente al adaptador requerido. Los argumentos que acepta son los siguientes:<br />
<br />
<pre><br />
$name (string): el nombre del campo correspondiente al archivo en el formulario.<br />
$adapter (string): adaptador para upload (file, image)<br />
<br />
factory($name, $adapter = 'file')<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
</source><br />
<br />
<br />
<br />
<br />
<br />
=== Ejemplo simple ===<br />
Se presenta un ejemplo simple de uso de la libreria Upload.<br />
<br />
Modelo '''archivador.php''':<br />
<br />
<source lang=php><br />
class Archivador<br />
{<br />
/**<br />
* Guardar archivo<br />
*<br />
* @return boolean<br />
*/<br />
public static function guardar()<br />
{<br />
$file = Upload::factory('archivo');<br />
<br />
// Guarda el archivo en el directorio "public/files/upload"<br />
if($file->save()) {<br />
Flash::valid('Operación Exitosa');<br />
return TRUE;<br />
}<br />
<br />
return FALSE;<br />
}<br />
}<br />
</source><br />
<br />
Controlador '''archivador_controller.php''':<br />
<br />
<source lang=php><br />
class ArchivadorController extends ApplicationController<br />
{<br />
/**<br />
* Accion para subir archivo<br />
*<br />
*/<br />
public function subir()<br />
{<br />
$archivador = Load::model('archivador');<br />
$archivador->guardar();<br />
}<br />
}<br />
</source><br />
<br />
En la vista '''subir.phtml''':<br />
<br />
<source lang=php><br />
<?php View::content() ?><br />
<br />
<h1>Subir Archivo</h1><br />
<br />
<?php echo Form::openMultipart() ?><br />
<?php echo Form::file('archivo') ?><br />
<?php echo Form::submit('Subir') ?><br />
<?php echo Form::close() ?><br />
</source><br />
<br />
=== Adaptador File ===<br />
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:<br />
<br />
==== save() ====<br />
Guarda el archivo subido.<br />
<br />
<pre><br />
$name (string): nombre con el que se guardará el archivo, por defecto se guarda con su nombre original.<br />
<br />
Retorna (boolean).<br />
<br />
save($name = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Guarda el archivo<br />
$file->save();<br />
</source><br />
<br />
==== saveRandom() ====<br />
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.<br />
<br />
<pre><br />
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.<br />
<br />
saveRandom()<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Guarda el archivo<br />
$fileName = $file->saveRandom();<br />
</source><br />
<br />
<br />
==== isUploaded() ====<br />
Verifica si el archivo esta subido de manera que posteriormente se pueda guardar.<br />
<br />
<pre><br />
Retorna (boolean).<br />
<br />
isUploaded()<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
if($file->isUploaded()) {<br />
echo 'Archivo listo para guardarse';<br />
}<br />
</source><br />
<br />
==== setPath() ====<br />
Asigna la ruta al directorio de destino para el archivo. Por defecto se considera '''public/files/upload'''.<br />
<br />
<pre><br />
$path (string): ruta de destino<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Nueva ruta de destino<br />
$file->setPath(APP_PATH . 'temp/archivos');<br />
</source><br />
<br />
==== setAllowScripts() ====<br />
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.<br />
<br />
<pre><br />
$value (boolean): indica si se permite subir o no scripts.<br />
<br />
setAllowScripts($value)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Esto se hace bajo propio riesgo.<br />
$file->setAllowScripts(TRUE);<br />
</source><br />
<br />
==== setMinSize() ====<br />
Indica el tamaño mínimo permitido para el archivo.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMinSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
$file->setMinSize('0.3 MB');<br />
</source><br />
<br />
==== setMaxSize() ====<br />
Indica el tamaño máximo permitido para el archivo.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMaxSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
$file->setMaxSize('1 MB');<br />
</source><br />
<br />
==== setTypes() ====<br />
Indica los tipos de archivos permitidos.<br />
<br />
<pre><br />
$value (array): lista de tipos de archivos permitidos según estándar MIME. Ejemplo: "text/plain".<br />
<br />
setTypes($value)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Documentos de texto<br />
$file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));<br />
</source><br />
<br />
==== setExtensions() ====<br />
Indica las extensiones de archivos permitidas.<br />
<br />
<pre><br />
$value (array): lista de extensiones para archivos. Ejemplo: "png".<br />
<br />
setExtensions($value)<br />
</pre><br />
<br />
<source lang=php><br />
$file = Upload::factory('archivo');<br />
<br />
// Documentos de texto<br />
$file->setExtensions(array('txt', 'dot', 'doc'));<br />
</source><br />
<br />
==== Ejemplo ====<br />
En el siguiente ejemplo se muestra un caso donde se desea subir archivos de texto al servidor.<br />
<br />
Modelo '''documento.php''':<br />
<br />
<source lang=php><br />
/**<br />
* Modelo para subir documentos de texto<br />
*<br />
*/<br />
<br />
// Carga la libreria Upload<br />
Load::lib('upload');<br />
<br />
class Documento<br />
{<br />
/**<br />
* Guarda el documento<br />
*<br />
* @return boolean<br />
*/<br />
public function guardar()<br />
{<br />
// Instancia con factory un objeto FileUpload<br />
$file = Upload::factory('documento');<br />
<br />
// Verifica si se subió el documento<br />
if(!$file->isUploaded()) {<br />
return FALSE;<br />
}<br />
<br />
// Tamaño máximo<br />
$file->setMaxSize('2MB');<br />
<br />
// Tipos de archivos permitidos<br />
$file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));<br />
<br />
// Extensiones permitidas<br />
$file->setExtensions(array('txt', 'dot', 'doc'));<br />
<br />
// Guarda el archivo<br />
if($file->save()) {<br />
Flash::valid('Operación Exitosa');<br />
return TRUE;<br />
}<br />
<br />
return FALSE;<br />
}<br />
}<br />
</source><br />
<br />
Controlador '''documento_controller.php''':<br />
<br />
<source lang=php><br />
class DocumentoController extends ApplicationController<br />
{<br />
/**<br />
* Accion para subir documento<br />
*<br />
*/<br />
public function subir()<br />
{<br />
$documento = Load::model('documento');<br />
$documento->guardar();<br />
}<br />
}<br />
</source><br />
<br />
Vista '''subir.phtml''':<br />
<br />
<source lang=php><br />
<?php View::content() ?><br />
<br />
<h1>Subir Documento</h1><br />
<br />
<?php echo Form::openMultipart() ?><br />
<?php echo Form::file('documento') ?><br />
<?php echo Form::submit('Subir') ?><br />
<?php echo Form::close() ?><br />
</source><br />
<br />
=== Adaptador Image ===<br />
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:<br />
<br />
==== save() ====<br />
Guarda el archivo subido.<br />
<br />
<pre><br />
$name (string): nombre con el que se guardará el archivo de imagen, por defecto se guarda con su nombre original.<br />
<br />
Retorna (boolean).<br />
<br />
save($name = NULL)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Guarda la imagen<br />
$img->save();<br />
</source><br />
<br />
==== saveRandom() ====<br />
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.<br />
<br />
<pre><br />
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.<br />
<br />
saveRandom()<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Guarda el archivo<br />
$fileName = $img->saveRandom();<br />
</source><br />
<br />
<br />
==== isUploaded() ====<br />
Verifica si el archivo de imagen esta subido de manera que posteriormente se pueda guardar.<br />
<br />
<pre><br />
Retorna (boolean).<br />
<br />
isUploaded()<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
if($img->isUploaded()) {<br />
echo 'Archivo listo para guardarse';<br />
}<br />
</source><br />
<br />
==== setPath() ====<br />
Asigna la ruta al directorio de destino para el archivo de imagen. Por defecto se considera '''public/img/upload'''.<br />
<br />
<pre><br />
$path (string): ruta de destino<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Nueva ruta de destino<br />
$img->setPath(APP_PATH . 'temp/fotos');<br />
</source><br />
<br />
==== setAllowScripts() ====<br />
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.<br />
<br />
<pre><br />
$value (boolean): indica si se permite subir o no scripts.<br />
<br />
setAllowScripts($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Esto se hace bajo propio riesgo.<br />
$img->setAllowScripts(TRUE);<br />
</source><br />
<br />
==== setMinSize() ====<br />
Indica el tamaño mínimo permitido para el archivo de imagen.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMinSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMinSize('0.3 MB');<br />
</source><br />
<br />
==== setMaxSize() ====<br />
Indica el tamaño máximo permitido para el archivo.<br />
<br />
<pre><br />
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".<br />
<br />
setMaxSize($size)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMaxSize('1 MB');<br />
</source><br />
<br />
==== setTypes() ====<br />
Indica los tipos de archivos de imagen permitidos.<br />
<br />
<pre><br />
$value (array): lista de tipos de archivos de imagen permitidos según estándar MIME. Ejemplo: "jpg".<br />
<br />
setTypes($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Archivos de imágenes<br />
// Para una mayor referencia del estándar MIME: http://www.w3schools.com/media/media_mimeref.asp<br />
$img->setTypes(array('jpeg', 'gif', 'png'));<br />
</source><br />
<br />
==== setExtensions() ====<br />
Indica las extensiones de archivos permitidas.<br />
<br />
<pre><br />
$value (array): lista de extensiones para archivos. Ejemplo: "png".<br />
<br />
setExtensions($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
<br />
// Formatos de Imagenes<br />
$img->setExtensions(array('jpg', 'gif', 'png'));<br />
<br />
</source><br />
<br />
==== setMinWidth() ====<br />
Indica el ancho mínimo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): ancho en pixeles.<br />
<br />
setMinWidth($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMinWidth(200);<br />
</source><br />
<br />
==== setMaxWidth() ====<br />
Indica el ancho máximo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): ancho en pixeles.<br />
<br />
setMaxWidth($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMaxWidth(200);<br />
</source><br />
<br />
==== setMinHeight() ====<br />
Indica el alto mínimo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): alto en pixeles.<br />
<br />
setMinHeight($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMinHeight(200);<br />
</source><br />
<br />
==== setMaxHeight() ====<br />
Indica el alto máximo en pixeles permitido para el archivo de imagen.<br />
<br />
<pre><br />
$value (int): alto en pixeles.<br />
<br />
setMaxHeight($value)<br />
</pre><br />
<br />
<source lang=php><br />
$img = Upload::factory('imagen', 'image');<br />
$img->setMaxHeight(200);<br />
</source><br />
<br />
==== Ejemplo ====<br />
En el siguiente ejemplo se muestra un caso donde se desea subir una foto a un servidor.<br />
<br />
Modelo '''foto.php''':<br />
<br />
<source lang=php><br />
/**<br />
* Modelo para subir fotos<br />
*<br />
*/<br />
<br />
// Carga la libreria Upload<br />
Load::lib('upload');<br />
<br />
class Foto<br />
{<br />
/**<br />
* Guarda el documento<br />
*<br />
* @return boolean<br />
*/<br />
public function guardar()<br />
{<br />
// Instancia con factory un objeto ImageUpload<br />
$img = Upload::factory('foto', 'image');<br />
<br />
// Verifica si se subió la imagen<br />
if(!$img->isUploaded()) {<br />
return FALSE;<br />
}<br />
<br />
// Tamaño máximo<br />
$img->setMaxSize('2MB');<br />
<br />
// Tipos de imagenes permitidas<br />
$img->setTypes(array('jpg', 'png'));<br />
<br />
// Extensiones permitidas<br />
$img->setExtensions(array('jpg', 'png'));<br />
<br />
// Guarda la imagen<br />
if($img->save()) {<br />
Flash::valid('Operación Exitosa');<br />
return TRUE;<br />
}<br />
<br />
return FALSE;<br />
}<br />
}<br />
</source><br />
<br />
Controlador '''foto_controller.php''':<br />
<br />
<source lang=php><br />
class FotoController extends ApplicationController<br />
{<br />
/**<br />
* Accion para subir foto<br />
*<br />
*/<br />
public function subir()<br />
{<br />
$foto = Load::model('foto');<br />
$foto->guardar();<br />
}<br />
}<br />
</source><br />
<br />
Vista '''subir.phtml''':<br />
<br />
<source lang=php><br />
<?php View::content() ?><br />
<br />
<h1>Subir Foto</h1><br />
<br />
<?php echo Form::openMultipart() ?><br />
<?php echo Form::file('foto') ?><br />
<?php echo Form::submit('Subir') ?><br />
<?php echo Form::close() ?><br />
</source><br />
<br />
== Libreria Session ==<br />
<br />
A la libreria Session se le modifican sus métodos quedando de la siguiente forma:<br />
<br />
===set($index, $value, $namespace='default')===<br />
Crear o especifica el valor para un indice de la sesión actual.<br />
<br />
<source lang=php><br />
Session::set('usuario', 'Administrador');<br />
</source><br />
<br />
===get($index, $namespace='default')===<br />
Obtener el valor para un indice de la sesión actual.<br />
<br />
<source lang=php><br />
Session::get('usuario'); // Retorna 'Administrador'<br />
</source><br />
<br />
===delete($index, $namespace='default')===<br />
Elimina el valor para un indice de la sesión actual.<br />
<br />
<source lang=php><br />
Session::delete('usuario');<br />
</source><br />
<br />
===has($index, $namespace='default')===<br />
Verifica que este definido el indice en la sesión actual.<br />
<br />
<source lang=php><br />
Session::has('id_usuario'); // Retorna FALSE.<br />
</source><br />
<br />
NOTA: '''$namespace''' es un espacio individual en el cual se pueden contener las variables de sesión, permitiendo evitar colisiones con nombres de variables.</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Breadcrumb&diff=2925Breadcrumb2010-08-09T17:22:51Z<p>IBet7o: Página creada con '== ¿Que es un Breadcrumb? == El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en conten...'</p>
<hr />
<div>== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
== Imagenes de ejemplo ==<br />
Ejemplo estilo sencillo.<br />
<br />
[[Archivo:Breadcrumb simple.png]]<br />
<br />
Ejemplo estilo avanzado, ejemplo tomado de http://pixelcoblog.com/<br />
<br />
[[Archivo:Breadcrumb style.png]]<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:31 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Partials]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Breadcrumb%26action%3Dedit&diff=2924Breadcrumb&action=edit2010-08-09T17:21:27Z<p>IBet7o: Blanqueada la página</p>
<hr />
<div></div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Breadcrumb%26action%3Dedit&diff=2923Breadcrumb&action=edit2010-08-09T17:20:42Z<p>IBet7o: Página creada con '== ¿Que es un Breadcrumb? == El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en conten...'</p>
<hr />
<div>== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
== Imagenes de ejemplo ==<br />
Ejemplo estilo sencillo.<br />
<br />
[[Archivo:Breadcrumb simple.png]]<br />
<br />
Ejemplo estilo avanzado, ejemplo tomado de http://pixelcoblog.com/<br />
<br />
[[Archivo:Breadcrumb style.png]]<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:31 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Partials]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Breadcrumb_BETA_2&diff=2922Breadcrumb BETA 22010-08-09T17:16:23Z<p>IBet7o: Blanqueada la página</p>
<hr />
<div></div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Breadcrumb_BETA_2&diff=2921Breadcrumb BETA 22010-08-09T06:16:15Z<p>IBet7o: </p>
<hr />
<div>== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
== Imagenes de ejemplo ==<br />
Ejemplo estilo sencillo.<br />
<br />
[[Archivo:Breadcrumb simple.png]]<br />
<br />
Ejemplo estilo avanzado, ejemplo tomado de http://pixelcoblog.com/<br />
<br />
[[Archivo:Breadcrumb style.png]]<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:31 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Partials]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Archivo:Breadcrumb_style.png&diff=2920Archivo:Breadcrumb style.png2010-08-09T06:11:12Z<p>IBet7o: Breadcrumb con estilo mejorado.
Idea tomada de http://pixelcoblog.com/</p>
<hr />
<div>Breadcrumb con estilo mejorado.<br />
<br />
Idea tomada de http://pixelcoblog.com/</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Archivo:Breadcrumb_simple.png&diff=2919Archivo:Breadcrumb simple.png2010-08-09T06:09:16Z<p>IBet7o: Breadcrumb con estilo simple.</p>
<hr />
<div>Breadcrumb con estilo simple.</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Breadcrumb_BETA_2&diff=2918Breadcrumb BETA 22010-08-09T05:32:39Z<p>IBet7o: </p>
<hr />
<div>== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:31 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Partials]]<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Breadcrumb_BETA_2&diff=2917Breadcrumb BETA 22010-08-09T05:31:28Z<p>IBet7o: Página creada con '===Breadcrumb BETA 2=== == ¿Que es un Breadcrumb? == El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado e...'</p>
<hr />
<div>===[[Breadcrumb BETA 2]]===<br />
== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:31 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2916Usuario discusión:IBet7o2010-08-09T05:28:05Z<p>IBet7o: Blanqueada la página</p>
<hr />
<div></div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2915Usuario discusión:IBet7o2010-08-09T05:27:23Z<p>IBet7o: Nueva sección: /* Breadcrumb Beta 2 */</p>
<hr />
<div>== Breadcrumb Beta 2 ==<br />
<br />
== Breadcrumb Beta 2 ==<br />
<br />
== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:27 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2914Usuario discusión:IBet7o2010-08-09T05:24:38Z<p>IBet7o: Blanqueada la página</p>
<hr />
<div></div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2913Usuario discusión:IBet7o2010-08-09T05:24:10Z<p>IBet7o: </p>
<hr />
<div>== Breadcrumb Beta 2 ==<br />
<br />
Categoría:Partials<br />
<br />
== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:23 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2912Usuario discusión:IBet7o2010-08-09T05:23:44Z<p>IBet7o: Nueva sección: /* Breadcrumb Beta 2 */</p>
<hr />
<div>== Breadcrumb Beta 2 ==<br />
<br />
===[[Breadcrumb Beta 2]]===<br />
<br />
Categoría:Partials<br />
<br />
== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 05:23 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2911Usuario discusión:IBet7o2010-08-09T05:22:16Z<p>IBet7o: Blanqueada la página</p>
<hr />
<div></div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2910Usuario discusión:IBet7o2010-08-09T05:21:10Z<p>IBet7o: </p>
<hr />
<div>===[[Breadcrumb Beta 2]]===<br />
<br />
Categoría:Partials<br />
<br />
== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 04:37 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2909Usuario discusión:IBet7o2010-08-09T05:18:56Z<p>IBet7o: </p>
<hr />
<div>Categoría:Partials<br />
<br />
== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 04:37 9 ago 2010 (UTC)<br />
<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Beta2_Breadcrumb%26action%3Dedit&diff=2908Beta2 Breadcrumb&action=edit2010-08-09T04:49:53Z<p>IBet7o: Página creada con '== ¿Que es un Breadcrumb? == El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en conten...'</p>
<hr />
<div>== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 04:49 9 ago 2010 (UTC)</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2907Usuario discusión:IBet7o2010-08-09T04:37:05Z<p>IBet7o: </p>
<hr />
<div>== ¿Que es un Breadcrumb? ==<br />
<br />
El Breadcrumb es un elemento de orientación dentro del sitio, por lo regular este elemento se encuentra posicionado entre la cabezera y en contentenido principal del sitio.<br />
<br />
El Breadcrumb ofrece al usuario su ubicación actual dentro del sitio. El término viene de la pista de migas de pan que dejan Hansel y Gretel en el popular cuento.<br />
<br />
En ejemplo de su vista en el sitio web, seria de la siguiente manera.<br />
<br />
'''Home > Sección Página > Subsección página o Portada del sitio > Sección del sitio > Página de la subsección'''<br />
<br />
== Tipos de Breadcrumb ==<br />
Existen 3 tipos:<br />
<br />
*'''Ruta de acceso:''' Son dinámicas y muestran la ruta que el usuario ha empleado para llegar a una página.<br />
*'''Ubucación:''' Son de tipo estatico e informa del lugar, dentro del sitio web, donde se encuentra la página y es independiente a la navegación que el usuario a seguido<br />
*'''Atributo:''' Muestran información que categoriza la página actual.<br />
<br />
== Instalación ==<br />
===Descarga de la clase===<br />
Descargar la clase del la siguiente liga [https://sourceforge.net/projects/kphp-breadcrumb/files/breadcrumb.rar/download Breadcrumb para kumbiaPHP]<br />
<br />
===Instalación de la clase===<br />
Descomprimir el .rar y pegar el archivo en la siguiente ruta '''default\app\libs\'''<br />
<br />
== Ejemplo Breadcrumb para kumbiaPHP ==<br />
<br />
===Modificar el archivo de configuración===<br />
Agregamos al archivo '''default\app\config\config.ini''' el switch breadcrumb que activa(true) o inactiva(false) la impresion del partial breadcrumb.<br />
<br />
<source lang="php" line><br />
locale = es_MX<br />
routes = On<br />
breadcrumb = true<br />
</source><br />
<br />
===Crear partial breadcrumb.phtml===<br />
Crear en default\app\views\_shared\partials\ el archivo breadcrumb.phtml con el siguiente contenido.<br />
<br />
<source lang="php"><br />
<?php if(Config::get('config.application.breadcrumb')): ?><br />
<div id="breadcrumb"><br />
<?php<br />
$Crumb = new Breadcrumb();<br />
$Crumb->addCrumb(0, _('Inicio'), Router::get('module'));<br />
$Crumb->addCrumb(1, Router::get('controller'), Router::get('module') . '/' . Router::get('controller'));<br />
$Crumb->addCrumb(2, Router::get('action'), Router::get('module') . '/' . Router::get('controller') . '/' . Router::get('action'));<br />
echo $Crumb->display();<br />
?><br />
</div><br />
<?php endif; ?><br />
</source><br />
<br />
== Configuraciones al Breadcrumb ==<br />
<br />
===$Crumb->separator===<br />
(string)Modifica el separador para los item del crumb, por default es &#187;.<br />
<br />
<source lang="php"><br />
$Crumb->separator = '&nbsp;|&nbsp;';<br />
</source><br />
<br />
===$Crumb->class_ul===<br />
(string)Nombre de la clase para ul en la lista, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_ul = 'breadcrumb_ul';<br />
</source><br />
<br />
===$Crumb->class_separator===<br />
(string)Nombre de la clase para li del separador, por default es NULL.<br />
<br />
<source lang="php"><br />
$Crumb->class_separator 'breadcrumb_li';<br />
</source><br />
<br />
===$Crumb->camel_case===<br />
(bool)Aplica notación CamelCase(ucwords) a los titulos de los items, por default es true.<br />
<br />
<source lang="php"><br />
$Crumb->camel_case = true<br />
</source><br />
<br />
===$Crumb->upper_case===<br />
(bool)Transforma a mayusculas(strtoupper) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->upper_case = false<br />
</source><br />
<br />
===$Crumb->lower_case===<br />
(bool)Transforma a minusculas(strtolower) los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->lower_case = false<br />
</source><br />
<br />
===$Crumb->cut===<br />
(bool)Corta los titulos de los items, por default es false.<br />
<br />
<source lang="php"><br />
$Crumb->cut = false<br />
</source><br />
<br />
===$Crumb->cut_len_max===<br />
(int)Longitud maxima del titulo, si esta activado $Crumb->cut evalua si la longitud del titulo es mayor a $Crumb->cut_len_max para realizar el corte, por default es 10.<br />
<br />
<source lang="php"><br />
$Crumb->cut_len_max = 10<br />
</source><br />
<br />
== Desde el controlador ==<br />
<br />
===Modificar el switch del Breadcrumb===<br />
<br />
Activar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', true)<br />
</source><br />
<br />
Inactivar la impresion del Breadcrumb.<br />
<br />
<source lang='php'><br />
Config::set('config.application.breadcrumb', false)<br />
</source><br />
<br />
===Breadcrumb::_addCrumb($title, string $url)===<br />
Agrega un crumb al final del Breadcrumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
===Breadcrumb::_updateCrumb($key, $title, $url)===<br />
Actualiza un crumb siempre y cuando este definido, para respetar el valor original de title o url se debe pasar como parametro un punto(.).<br />
<br />
int $key => Index del crumb.<br />
<br />
string $title => Titulo del crumb.<br />
<br />
string $url => URL destino.<br />
<br />
----<br />
<br />
Bueno espero haberme explicado de manera clara, cualquier problema nos vemos en el [http://www.kumbiaphp.com/blog/irc/ IRC].<br />
<br />
--Saludos [[Usuario:IBet7o|iBet7o]] 04:37 9 ago 2010 (UTC)</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Usuario_discusi%C3%B3n:IBet7o&diff=2906Usuario discusión:IBet7o2010-08-09T01:40:11Z<p>IBet7o: Página creada con '== Introducción =='</p>
<hr />
<div>== Introducción ==</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Ejemplo_de_reCAPTCHA_en_KumbiaPHP_v2&diff=2839Ejemplo de reCAPTCHA en KumbiaPHP v22010-07-07T00:33:59Z<p>IBet7o: </p>
<hr />
<div>{{cleanupbox<br />
|image=[[Archivo:Import.png|40px]]<br />
|texto ='''Este Artículo esta siendo revisado por los Kumbieros.'''<br /><br />
<span style="font-size:90%">Puedes tomar la información que aqui se encuentra pero no nos hacemos responsable</span><br />
}}<br />
<br />
== Pasos previos ==<br />
Este ejemplo es la evolución del [http://wiki.kumbiaphp.com/Ejemplo_de_reCAPTCHA_en_KumbiaPHP anterior tutorial sobre reCaptcha]. Se recomienda leer el tutorial anterior para entender el funcionamiento básico y posteriormente leer este.<br />
<br />
Cosas que vamos a encontrar distintas: <br />
* Se ha creado una librería para abstraer las funciones de generar un captcha y para comprobar una contestación. Asi podremos usarla desde otros controladores.<br />
* Se ha creado una segunda vista, en lugar de dejar un simple ''echo'' como hizo en el tutorial anterior.<br />
<br />
== Pasos ==<br />
En el [http://wiki.kumbiaphp.com/Ejemplo_de_reCAPTCHA_en_KumbiaPHP anterior tutorial sobre reCaptcha] hacíamos toda la ''logica'' del reCaptcha en el controlador, lo cual, si solo era un único controlador no pasaba nada, pero de necesitarlo en más controladores, teníamos problemas.<br />
<br />
Esta vez vamos a crear una librería que se encargue de todo: almacenar las keys, generar el HTML y validar la entrada del usuario. Dicho de otra forma, hemos creado una segunda capa de abstracción entre nuestra aplicación y reCaptcha: la primera es el propio API de reCaptcha y la segunda nuestra librería.<br />
<br />
Creamos la libreria, ''app/libs/recaptcha.php'':<br />
<source lang=php ><br />
<?php <br />
// Incluimos el fichero con la librería<br />
require_once APP_PATH. '/libs/recaptchalib.php';<br />
/**<br />
* Clase para consumir el servicio anti-spam reCaptcha<br />
* @author Soukron <br />
*/<br />
class reCaptcha<br />
{<br />
/**<br />
* Clave Publica reCaptcha<br />
* @var string<br />
*/<br />
private static $_publicKey = 'TU_CLAVE_PUBLICA';<br />
/**<br />
* Clave Privada reCaptcha<br />
*/<br />
private static $_privateKey = 'TU_CLAVE_PRIVADA'; <br />
<br />
/**<br />
* Genera el HTML con el código reCaptcha<br />
* <br />
* @param $error<br />
* @return string <br />
*/<br />
public static function html($error = NULL)<br />
{<br />
return recaptcha_get_html(self::$_publicKey, $error);<br />
}<br />
/**<br />
* Valida que el código colocado sea el correcto<br />
* @return Response<br />
*/<br />
public static function validate()<br />
{<br />
$ret = recaptcha_check_answer (self::$_privateKey,<br />
$_SERVER['REMOTE_ADDR'],<br />
$_POST['recaptcha_challenge_field'],<br />
$_POST['recaptcha_response_field']);<br />
<br />
return $ret;<br />
}<br />
}<br />
</source><br />
<br />
<br />
Con lo que nuestro controlador se simplifica de la siguiente forma ''app/controllers/captcha_controller.php'':<br />
<source lang=php ><br />
<?php<br />
Load::Lib("recaptcha");<br />
class CaptchaController extends ApplicationController<br />
{<br />
public function index()<br />
{ <br />
// Si vienen datos de formulario, los enviamos a la vista de nuevo<br />
if ($this->has_post('Datos')) $this->Datos = $this->post('Datos');<br />
<br />
// Comprobamos que se haya rellenado el reCAPTCHA<br />
if ($this->has_post("recaptcha_response_field"))<br />
{<br />
// Realizamos la comprobacion<br />
$ret = reCaptcha::validate();<br />
if ($ret->is_valid) {<br />
$this->Datos = $this->post('Datos');<br />
$this->render("validado");<br />
}<br />
// Enviamos el error a la vista<br />
$this->previousError = $ret->error;<br />
}<br />
}<br />
}<br />
</source><br />
<br />
<br />
En la vista, usaremos el otro método de la librería. La vista queda como sigue, app/views/captcha/index.phtml: <br />
<source lang=php ><br />
<strong>Rellena el cuadro con tu nombre: </strong><br />
<?php <br />
echo form_tag('captcha/');<br />
echo input_field_tag('Datos.nombre');<br />
<br />
// Cargamos la librería y le pedimos un código html<br />
Load::Lib("recaptcha");<br />
echo reCaptcha::html($previousError); <br />
<br />
echo submit_tag('Enviar datos');<br />
?><br />
</source><br />
<br />
<br />
Y por último, para de paso mostrar el método ''render'' de KumbiaPHP, creamos la vista que se mostrará en cuanto validemos correctamente el captcha. <br />
<br />
La vista es ''app/views/captcha/validado.phtml'':<br />
<source lang=php><br />
<strong>Hola <?php echo $Datos['nombre']; ?>, tu formulario ha sido enviado!</strong><br />
</source><br />
<br />
<br />
== Aplicando estilos ==<br />
Para poder cambiar el css del captcha debemos agregar el siguiente código a nuestra app.<br />
<source lang=javascript><br />
<script><br />
var RecaptchaOptions = {<br />
theme : 'clean' // [ red, white, blackglass, clean, custom ]<br />
};<br />
</script><br />
</source><br />
A continuación agregar el siguiente código a nuestra app.<br />
<source lang=css><br />
<style><br />
.recaptchatable .recaptcha_image_cell, #recaptcha_table<br />
{<br />
background-color: #FFFFFF !important; /* reCaptcha widget background color */<br />
}<br />
#recaptcha_table<br />
{<br />
border-color: #DFDFDF !important; /* reCaptcha widget border color */<br />
}<br />
#recaptcha_response_field<br />
{<br />
border: 1px solid #CCCCCC !important; /* Text input field border color */<br />
background-color:#FFFFFF !important; /* Text input field background color */<br />
}<br />
</style><br />
</source><br />
Para mas información al respecto [http://wiki.recaptcha.net/ wiki de reCaptcha]<br />
<br />
<br />
== Aplicando el cambio de idioma ==<br />
Para poder cambiar el idioma del captcha podemos establecer el párametro lang utilizado en la API, de la siguiente manera.<br />
<source lang=javascript><br />
<script><br />
var RecaptchaOptions = {<br />
lang: 'es'<br />
};<br />
</script><br />
</source><br />
Lo anterior traducira el captcha a español.<br />
<br />
También podemos establecer nuestros propios textos a utilizar, agregando el siguiente codigo a nuestra app.<br />
<source lang=javascript><br />
<script><br />
var RecaptchaOptions = {<br />
custom_translations : {<br />
instructions_visual : 'Escriba las dos palabras:',<br />
instructions_audio : 'Escribir lo que escucha:',<br />
play_again : 'Volver a reproducir el audio.',<br />
cant_hear_this : 'Descarga el audio en formato MP3.',<br />
visual_challenge : 'Modo Visual',<br />
audio_challenge : 'Escuchar la clave de seguridad.',<br />
refresh_btn : 'Volver a generar una clave de seguridad.',<br />
help_btn : 'Ayuda',<br />
incorrect_try_again : 'Incorrecto. Por favor, inténtelo de nuevo.',<br />
},<br />
theme : 'clean'<br />
};<br />
</script><br />
</source><br />
<br />
<br />
== Prueba ==<br />
Ya esta! Como en el anterior tutorial, puedes visitar la URL de tu controlador en http://''<tuhost>''/captcha y probarlo.<br />
<br />
<br />
Espero que esté claro! Si no, podeis escribirme o localizarme en el IRC.<br />
<br />
<br />
Saludos,<br />
<br />
Soukron<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=KumbiaPHP_y_gettext&diff=2811KumbiaPHP y gettext2010-06-23T15:36:19Z<p>IBet7o: </p>
<hr />
<div>El objeto de este pequeño tutorial, es explicar como usar gettext para internacionalizar nuestras aplicaciones en [http://www.kumbiaphp.com KumbiaPHP].<br />
<br />
===Importante=== <br />
[[Archivo: Warning.png]]Para que esta extesión funcione correctamente, se debe tener instalado en el servidor el programa '''locale'''.<br />
<br />
Para Debian y derivados, (ejecutar como root):<br />
aptitude install locale <br />
Además, también debe estar disponible el lenguaje, al cual se quiere hacer la traducción.<br />
locale -a<br />
<br />
=== Tutorial === <br />
Lo primero que debes tener presente, es que todos los textos que quieras mostrar en diferentes idiomas, los has de escribir en la vista de la siguiente forma: '''''_("Texto a traducir")'''''.<br />
<br />
Por ejemplo, en nuestra vista tenemos el siguiente formulario:<br />
<br />
<source lang="php"><br />
<?php echo Form::open('formularios/prueba') ?><br />
Nombre: <?php echo Form::text('nombre') ?><br />
</source><br />
<br />
Para que el texto '''Nombre:''' nos lo internacionalice, lo habremos de escribir así:<br />
<br />
<source lang="php"><br />
<?php echo Form::open('formularios/prueba') ?><br />
<?php echo _("Nombre:") . Form::text('nombre') ?><br />
</source><br />
<br />
Con esto, ya sabemos como tenemos que escribir los textos, que queremos internacionalizar. Otra cosa que hay que tener en cuenta, es que deberemos crear (ahora explicaré como) un archivo '''.po''', por cada idioma que queramos tener en nuestra aplicación.<br />
<br />
Los '''códigos de idioma''' a utilizar para los nombres de las carpetas, son los que se definen en la norma [http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes '''ISO 639'''] seguido de un guión bajo y el código de país [http://www.iso.org/iso/english_country_names_and_code_elements '''ISO3166''']. Por ejemplo podríamos tener para tres países en los que se habla español pero tienen diferente cultura los siguientes códigos: es_ES(España), es_AR (Argentina) y es_UY(Uruguay).<br />
<br />
Los '''códigos de idioma''' a utilizar para los nombres de los archivos, son los que se definen en la norma [http://www.iso.org/iso/english_country_names_and_code_elements '''ISO3166'''].<br />
<br />
Has de tener ubicado, la correspondiente carpeta de su idioma, dentro de la aplicación en app/locale. Por ejemplo.<br />
<br />
<pre><br />
kumbiaphp/<br />
|-- app<br />
|-- locale<br />
|-- es_ES<br />
|-- LC_MESSAGES<br />
|-- es.po<br />
|-- es_AR<br />
|-- LC_MESSAGES<br />
|-- ar.po<br />
|-- es_UY<br />
|-- LC_MESSAGES<br />
|-- uy.po<br />
|-- core<br />
</pre><br />
<br />
= Generación de los archivos .po =<br />
Para la generación de estos dos archivos, utilizo el programa '''''poedit'''''. Que podemos descargar desde su página oficial: [http://www.poedit.net/download.php www.poedit.net]. Para que veas como funciona, vamos a generar los archivos .po y el idioma inglés:<br />
<br />
Abrimos el programa, en el menú superior seleccionamos '''''edición->preferencias''''', en la ventana que se abre, nos vamos a la '''pestaña procesadores''' y seleccionamos '''PHP'''.<br />
<br />
[[Archivo:po1.jpg]]<br />
<br />
<br />
Ahora pulsaremos '''''Editar''''', para indicarle las extensiones que usamos (que serán las que escanee el programa, en busca de etiquetas _("xxx")). En nuestro caso le añadiremos '''''*.phtml'''''<br />
<br />
[[Archivo:po2.jpg]]<br />
<br />
Ahora en '''''Ejecución''''' añadiremos '''''-L php'''''<br />
<br />
[[Archivo:po3.jpg]]<br />
<br />
Con lo que la linea de comandos a procesar, nos quedaría como en el gráfico de arriba. Ahora pulsaremos en '''''Aceptar''''', y con esto ya le hemos dicho al poedit como ha de trabajar. El siguiente paso será, la creación de catálogos (un catálogo por cada idioma de nuestra aplicación). Para ello pulsaremos ''''' Archivo->Nuevo catálogo''''', en la pestaña '''''Información del proyecto''''' pondremos los datos, correspondientes al idioma que estamos creando, en nuestro caso el inglés.<br />
<br />
[[Archivo:Ejemplo.jpg]]<br />
<br />
Luego vamos a la pestaña '''''Carpetas''''' y en '''''Directorio Raiz''''', pondremos la ruta completa a nuestra app, y debajo en '''''Carpetas''''', pondríamos las carpetas que queremos que nos escanee, pero mejor poner un '''''.''''' y así no se nos escapará ninguna.<br />
<br />
[[Archivo:po5.jpg]]<br />
<br />
Pulsamos en '''''Aceptar''''', ahora nos pedirá donde queremos guardar el archivo .po correspondiente. Lo haremos dentro de '''locale''', en la carpeta correspondiente al idioma que estemos creando. En este momento realizará el escaneo de los archivos, en busca de todas las etiquetas con el formato '''''_("xxx")''''' que tengamos, y nos mostrará una pantalla como la siguiente, en la que estarán todos los textos encontrados.<br />
<br />
[[Archivo:po6.jpg]]<br />
<br />
En el gráfico anterior, nos muestra que ha encontrado las siguientes etiquetas: 'esto es la prueba numero DOS' y 'esto es la prueba numero UNO', ya que en la vista correspondiente está como:<br />
<br />
<source lang="php"><br />
<h1> <?php echo _("esto es la prueba numero UNO") ?> </h1><br/><br />
<h1> <?php echo _("esto es la prueba numero DOS") ?></h1><br />
</source><br />
<br />
Ahora pulsaríamos '''''Aceptar''''' y ya tenemos nuestro archivo '''''.po''''' del idioma correspondiente. Y deberemos introducir, las traducciones de las etiquetas correspondientes en él. Ahora simplemente con cambiar el locale de nuestra aplicación, nos la mostrará en el idioma seleccionado.<br />
<br />
= Como utilizar el archivo .po =<br />
<br />
Para que las etiquetas aparezcan traducidas, habría que añadir el siguiente código en el aplication_controller (si quieres que este disponible en toda la aplicación) o en el controlador que quieras usarlo.<br />
<br />
<source lang="php"><br />
<?php<br />
$language="en_EN";<br />
putenv("LC_ALL=$language");<br />
setlocale(LC_ALL, $language);<br />
bindtextdomain("messages", APP_PATH . "./locale");<br />
textdomain("messages");<br />
?><br />
</source><br />
<br />
'''''Nota:''''' El primer argumento de las funciones bindtextdomain y textdomain, tiene que ser el nombre del archivo .po que se haya creado.<br />
<br />
Ten en cuenta, que con ese código nos lo mostraría en inglés. Si quieres cambiarlo dinámicamente desde tu aplicación, tendrás que adecuar el código, para que la variable '''''$language''''', tome el idioma que te interese en cada momento.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=KumbiaPHP_y_gettext&diff=2810KumbiaPHP y gettext2010-06-23T15:22:06Z<p>IBet7o: </p>
<hr />
<div>El objeto de este pequeño tutorial, es explicar como usar gettext para internacionalizar nuestras aplicaciones en [http://www.kumbiaphp.com KumbiaPHP].<br />
<br />
===Importante=== <br />
[[Archivo: Warning.png]]Para que esta extesión funcione correctamente, se debe tener instalado en el servidor el programa '''locale'''.<br />
<br />
Para Debian y derivados, (ejecutar como root):<br />
aptitude install locale <br />
Además, también debe estar disponible el lenguaje, al cual se quiere hacer la traducción.<br />
<br />
=== Tutorial === <br />
Lo primero que debes tener presente, es que todos los textos que quieras mostrar en diferentes idiomas, los has de escribir en la vista de la siguiente forma: '''''_("Texto a traducir")'''''.<br />
<br />
Por ejemplo, en nuestra vista tenemos el siguiente formulario:<br />
<br />
<source lang="php"><br />
<?php echo Form::open('formularios/prueba') ?><br />
Nombre: <?php echo Form::text('nombre') ?><br />
</source><br />
<br />
Para que el texto '''Nombre:''' nos lo internacionalice, lo habremos de escribir así:<br />
<br />
<source lang="php"><br />
<?php echo Form::open('formularios/prueba') ?><br />
<?php echo _("Nombre:") . Form::text('nombre') ?><br />
</source><br />
<br />
Con esto, ya sabemos como tenemos que escribir los textos, que queremos internacionalizar. Otra cosa que hay que tener en cuenta, es que deberemos crear (ahora explicaré como) un archivo '''.po''', por cada idioma que queramos tener en nuestra aplicación.<br />
<br />
Los '''códigos de idioma''' a utilizar, son los que se definen en la norma [http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes '''ISO 639''']. Por ejemplo, es (español), fr (francés).<br />
<br />
Has de tener ubicado, la correspondiente carpeta de su idioma, dentro de la aplicación en app/locale. Por ejemplo, si yo quiero que mi aplicación se pueda mostrar en español y en inglés, la estructura sería esta:<br />
<br />
<pre><br />
kumbiaphp/<br />
|-- app<br />
|-- locale<br />
|-- es_ES<br />
|-- LC_MESSAGES<br />
|-- es.po<br />
|-- en_EN<br />
|-- LC_MESSAGES<br />
|-- en.po<br />
|-- core<br />
</pre><br />
<br />
= Generación de los archivos .po =<br />
Para la generación de estos dos archivos, utilizo el programa '''''poedit'''''. Que podemos descargar desde su página oficial: [http://www.poedit.net/download.php www.poedit.net]. Para que veas como funciona, vamos a generar los archivos .po y el idioma inglés:<br />
<br />
Abrimos el programa, en el menú superior seleccionamos '''''edición->preferencias''''', en la ventana que se abre, nos vamos a la '''pestaña procesadores''' y seleccionamos '''PHP'''.<br />
<br />
[[Archivo:po1.jpg]]<br />
<br />
<br />
Ahora pulsaremos '''''Editar''''', para indicarle las extensiones que usamos (que serán las que escanee el programa, en busca de etiquetas _("xxx")). En nuestro caso le añadiremos '''''*.phtml'''''<br />
<br />
[[Archivo:po2.jpg]]<br />
<br />
Ahora en '''''Ejecución''''' añadiremos '''''-L php'''''<br />
<br />
[[Archivo:po3.jpg]]<br />
<br />
Con lo que la linea de comandos a procesar, nos quedaría como en el gráfico de arriba. Ahora pulsaremos en '''''Aceptar''''', y con esto ya le hemos dicho al poedit como ha de trabajar. El siguiente paso será, la creación de catálogos (un catálogo por cada idioma de nuestra aplicación). Para ello pulsaremos ''''' Archivo->Nuevo catálogo''''', en la pestaña '''''Información del proyecto''''' pondremos los datos, correspondientes al idioma que estamos creando, en nuestro caso el inglés.<br />
<br />
[[Archivo:Ejemplo.jpg]]<br />
<br />
Luego vamos a la pestaña '''''Carpetas''''' y en '''''Directorio Raiz''''', pondremos la ruta completa a nuestra app, y debajo en '''''Carpetas''''', pondríamos las carpetas que queremos que nos escanee, pero mejor poner un '''''.''''' y así no se nos escapará ninguna.<br />
<br />
[[Archivo:po5.jpg]]<br />
<br />
Pulsamos en '''''Aceptar''''', ahora nos pedirá donde queremos guardar el archivo .po correspondiente. Lo haremos dentro de '''locale''', en la carpeta correspondiente al idioma que estemos creando. En este momento realizará el escaneo de los archivos, en busca de todas las etiquetas con el formato '''''_("xxx")''''' que tengamos, y nos mostrará una pantalla como la siguiente, en la que estarán todos los textos encontrados.<br />
<br />
[[Archivo:po6.jpg]]<br />
<br />
En el gráfico anterior, nos muestra que ha encontrado las siguientes etiquetas: 'esto es la prueba numero DOS' y 'esto es la prueba numero UNO', ya que en la vista correspondiente está como:<br />
<br />
<source lang="php"><br />
<h1> <?php echo _("esto es la prueba numero UNO") ?> </h1><br/><br />
<h1> <?php echo _("esto es la prueba numero DOS") ?></h1><br />
</source><br />
<br />
Ahora pulsaríamos '''''Aceptar''''' y ya tenemos nuestro archivo '''''.po''''' del idioma correspondiente. Y deberemos introducir, las traducciones de las etiquetas correspondientes en él. Ahora simplemente con cambiar el locale de nuestra aplicación, nos la mostrará en el idioma seleccionado.<br />
<br />
= Como utilizar el archivo .po =<br />
<br />
Para que las etiquetas aparezcan traducidas, habría que añadir el siguiente código en el aplication_controller (si quieres que este disponible en toda la aplicación) o en el controlador que quieras usarlo.<br />
<br />
<source lang="php"><br />
<?php<br />
$language="en_EN";<br />
putenv("LC_ALL=$language");<br />
setlocale(LC_ALL, $language);<br />
bindtextdomain("messages", APP_PATH . "./locale");<br />
textdomain("messages");<br />
?><br />
</source><br />
<br />
'''''Nota:''''' El primer argumento de las funciones bindtextdomain y textdomain, tiene que ser el nombre del archivo .po que se haya creado.<br />
<br />
Ten en cuenta, que con ese código nos lo mostraría en inglés. Si quieres cambiarlo dinámicamente desde tu aplicación, tendrás que adecuar el código, para que la variable '''''$language''''', tome el idioma que te interese en cada momento.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=KumbiaPHP_y_gettext&diff=2573KumbiaPHP y gettext2010-04-22T21:00:21Z<p>IBet7o: /* Tutorial */</p>
<hr />
<div>El objeto de este pequeño tutorial, es explicar como usar gettext para internacionalizar nuestras aplicaciones en [http://www.kumbiaphp.com KumbiaPHP].<br />
<br />
===Importante=== <br />
[[Archivo: Warning.png]]Para que esta extesión funcione correctamente, se debe tener instalado en el servidor el programa '''locale'''.<br />
<br />
Para Debian y derivados, (ejecutar como root):<br />
aptitude install locale <br />
Además, también debe estar disponible el lenguaje, al cual se quiere hacer la traducción.<br />
<br />
=== Tutorial === <br />
Lo primero que debes tener presente, es que todos los textos que quieras mostrar en diferentes idiomas, los has de escribir en la vista de la siguiente forma: '''''_("Texto a traducir")'''''.<br />
<br />
Por ejemplo, en nuestra vista tenemos el siguiente formulario:<br />
<br />
<source lang="php"><br />
<?php echo Form::open('formularios/prueba') ?><br />
Nombre: <?php echo Form::text('nombre') ?><br />
</source><br />
<br />
Para que el texto '''Nombre:''' nos lo internacionalice, lo habremos de escribir así:<br />
<br />
<source lang="php"><br />
<?php echo Form::open('formularios/prueba') ?><br />
_("Nombre:") <?php echo Form::text('nombre') ?><br />
</source><br />
<br />
Con esto, ya sabemos como tenemos que escribir los textos, que queremos internacionalizar. Otra cosa que hay que tener en cuenta, es que deberemos crear (ahora explicaré como) un archivo '''.po''', por cada idioma que queramos tener en nuestra aplicación.<br />
<br />
Los '''códigos de idioma''' a utilizar, son los que se definen en la norma '''ISO 639'''. Por ejemplo, es (español), fr (francés).<br />
<br />
Has de tener ubicado, la correspondiente carpeta de su idioma, dentro de la aplicación en app/locale. Por ejemplo, si yo quiero que mi aplicación se pueda mostrar en español y en inglés, la estructura sería esta:<br />
<br />
<pre><br />
kumbiaphp/<br />
|-- app<br />
|-- locale<br />
|-- es_ES<br />
|-- LC_MESSAGES<br />
|-- es.po<br />
|-- en_EN<br />
|-- LC_MESSAGES<br />
|-- en.po<br />
|-- core<br />
</pre><br />
<br />
= Generación de los archivos .po =<br />
Para la generación de estos dos archivos, utilizo el programa '''''poedit'''''. Que podemos descargar desde su página oficial: [http://www.poedit.net/download.php www.poedit.net]. Para que veas como funciona, vamos a generar los archivos .po y el idioma inglés:<br />
<br />
Abrimos el programa, en el menú superior seleccionamos '''''edición->preferencias''''', en la ventana que se abre, nos vamos a la '''pestaña procesadores''' y seleccionamos '''PHP'''.<br />
<br />
[[Archivo:po1.jpg]]<br />
<br />
<br />
Ahora pulsaremos '''''Editar''''', para indicarle las extensiones que usamos (que serán las que escanee el programa, en busca de etiquetas _("xxx")). En nuestro caso le añadiremos '''''*.phtml'''''<br />
<br />
[[Archivo:po2.jpg]]<br />
<br />
Ahora en '''''Ejecución''''' añadiremos '''''-L php'''''<br />
<br />
[[Archivo:po3.jpg]]<br />
<br />
Con lo que la linea de comandos a procesar, nos quedaría como en el gráfico de arriba. Ahora pulsaremos en '''''Aceptar''''', y con esto ya le hemos dicho al poedit como ha de trabajar. El siguiente paso será, la creación de catálogos (un catálogo por cada idioma de nuestra aplicación). Para ello pulsaremos ''''' Archivo->Nuevo catálogo''''', en la pestaña '''''Información del proyecto''''' pondremos los datos, correspondientes al idioma que estamos creando, en nuestro caso el inglés.<br />
<br />
[[Archivo:Ejemplo.jpg]]<br />
<br />
Luego vamos a la pestaña '''''Carpetas''''' y en '''''Directorio Raiz''''', pondremos la ruta completa a nuestra app, y debajo en '''''Carpetas''''', pondríamos las carpetas que queremos que nos escanee, pero mejor poner un '''''.''''' y así no se nos escapará ninguna.<br />
<br />
[[Archivo:po5.jpg]]<br />
<br />
Pulsamos en '''''Aceptar''''', ahora nos pedirá donde queremos guardar el archivo .po correspondiente. Lo haremos dentro de '''locale''', en la carpeta correspondiente al idioma que estemos creando. En este momento realizará el escaneo de los archivos, en busca de todas las etiquetas con el formato '''''_("xxx")''''' que tengamos, y nos mostrará una pantalla como la siguiente, en la que estarán todos los textos encontrados.<br />
<br />
[[Archivo:po6.jpg]]<br />
<br />
En el gráfico anterior, nos muestra que ha encontrado las siguientes etiquetas: 'esto es la prueba numero DOS' y 'esto es la prueba numero UNO', ya que en la vista correspondiente está como:<br />
<br />
<source lang="php"><br />
<h1> <?php echo _("esto es la prueba numero UNO") ?> </h1><br/><br />
<h1> <?php echo _("esto es la prueba numero DOS") ?></h1><br />
</source><br />
<br />
Ahora pulsaríamos '''''Aceptar''''' y ya tenemos nuestro archivo '''''.po''''' del idioma correspondiente. Y deberemos introducir, las traducciones de las etiquetas correspondientes en él. Ahora simplemente con cambiar el locale de nuestra aplicación, nos la mostrará en el idioma seleccionado.<br />
<br />
= Como utilizar el archivo .po =<br />
<br />
Para que las etiquetas aparezcan traducidas, habría que añadir el siguiente código en el aplication_controller (si quieres que este disponible en toda la aplicación) o en el controlador que quieras usarlo.<br />
<br />
<source lang="php"><br />
<?php<br />
$language="en_EN";<br />
putenv("LC_ALL=$language");<br />
setlocale(LC_ALL, $language);<br />
bindtextdomain("messages", "./locale");<br />
textdomain("messages");<br />
?><br />
</source><br />
<br />
'''''Nota:''''' El primer argumento de las funciones bindtextdomain y textdomain, tiene que ser el nombre del archivo .po que se haya creado.<br />
<br />
Ten en cuenta, que con ese código nos lo mostraría en inglés. Si quieres cambiarlo dinámicamente desde tu aplicación, tendrás que adecuar el código, para que la variable '''''$language''''', tome el idioma que te interese en cada momento.<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Integrar_KumbiaPHP_Spirit_con_TinyMCE&diff=2572Integrar KumbiaPHP Spirit con TinyMCE2010-04-22T20:40:08Z<p>IBet7o: /* Llamado al editor mediante un partial */</p>
<hr />
<div>[http://tinymce.moxiecode.com/ TinyMCE] es un editor [http://es.wikipedia.org/wiki/WYSIWYG WYSIWYG] de reconocimiento mundial que a los desarrolladores nos resulta muy útil para proporcionar un editor de texto a los usuarios, fácil de usar, rápido y con controles intuitivos. ''Recordemos que se maneja bajo la licencia LGPL''<br />
<br />
En este tutorial veremos como podemos integrarlo (TinyMCE) a nuestro APP con KumbiaPHP.<br />
<br />
<br />
<br />
== Instalar TinyMCE ==<br />
<br />
Luego de tener Kumbiaphp en nuestro servidor, descargaremos el editor desde la [http://tinymce.moxiecode.com/download.php web Oficial] seleccionamos la opción mas conveniente. Para el caso descargaremos Main package<br />
<br />
Al descargarlo y descomprimirlo tenemos:<br />
<br />
[[Archivo: Dibujo1.jpg]]<br />
<br />
La carpeta Examples viene con ejemplos de como incluir el editor de varias formas, personalizando las barras de herramientas temas y layout.<br />
<br />
La carpeta scripts contiene la carpeta '''tiny_mce''' es esta carpeta y su contenido que debemos subir a nuestro APP de KumbiaPHP. Lo haremos en la carpeta public/javascript<br />
<br />
[[Archivo: Directorios_javascript.jpg ]]<br />
<br />
== Llamado al editor mediante un partial ==<br />
<br />
Ahora debemos llamar dicho script desde el formulario que tengamos en kumbiaphp y para facilitar el proceso usaremos un Partial (views/partials/tinymce_simple.phtml)<br />
<br />
Mediante el uso del Helper javascript_include_tag(); estamos incluyendo la librería principal de TinyMCE que tiene por nombre tiny_mce.js<br />
<source lang=php line><br />
<?php<br />
echo javascript_include_tag('tiny_mce/tiny_mce');<br />
?><br />
</source><br />
<br />
<br />
''Contenido de:'' views/partials/tinymce_simple.phtml <br />
<source lang=javascript><br />
<?php<br />
echo javascript_include_tag('tiny_mce/tiny_mce');<br />
?><br />
<br />
<script language="javascript" type="text/javascript"><br />
<br />
tinyMCE.init({<br />
mode : "textareas",<br />
theme : "advanced",<br />
//language : "es",<br />
remove_linebreaks : false,<br />
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,sup,sub,separator,bullist,numlist,formatselect,undo,redo,link,unlink,image,visualaid,charmap,<br />
cleanup,code,separator,emotions,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,",<br />
theme_advanced_buttons2 : "",<br />
theme_advanced_buttons3 : "",<br />
theme_advanced_toolbar_location : "top",<br />
theme_advanced_toolbar_align : "left",<br />
theme_advanced_path_location : "",<br />
//extended_valid_elements : //"a[name|href|target|title],img[class|src|border=0|alt|title|hspace|<br />
//vspace|width|height|align|name], hr[class|width|size|noshade],span[class]",<br />
entity_encoding : "raw",<br />
relative_urls : false,<br />
<br />
theme_advanced_statusbar_location : "bottom",<br />
theme_advanced_resizing : true,<br />
<br />
skin : "o2k7",<br />
skin_variant : "black",<br />
plugins : "emotions",<br />
<br />
});<br />
</script><br />
</source><br />
<br />
Luego de tener el partial y todo el contenido de tinyMCE en nuestro servidor procedemos a aplicarlo en un formulario que tengamos. El partial anterior hara que los TexArea de los formularios contengan un editor de texto con el formato que se especifica en el Partial.<br />
<br />
== Ejecución del editor TinyMCE en un formulario ==<br />
<br />
Como podemos ver en este formulario, el textarea_tag no incluye nunca una referencia al editor TinyMCE, es el partial quien se encarga de asociarlo. (El formulario puede estar incluido en una vista cualquiera)<br />
<br />
''Formulario de ejemplo:''<br />
<br />
<source lang=php line><br />
<table><br />
<tr><br />
<td>Titulo</td><br />
<td><?php echo text_field_tag(array('blog.titulo'),"size: 40","maxlength: 145") ?></td><br />
</tr><br />
<tr><br />
<td>Articulo</td><br />
<td><?php echo textarea_tag('blog.articulo',"cols: 80", "rows: 20"); ?></td><br />
</tr><br />
<tr><br />
<td>Tags</td><br />
<td><?php echo text_field_tag(array('blog.tags')) ?></td><br />
</tr><br />
<tr><br />
<td>&nbsp;</td><br />
<td><?php echo submit_tag('Publicar articulo') ?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag();<br />
echo link_to("blog/index","Ir al inicio");<br />
<br />
//Aqui llamamos al partial que asociara un area de texto de este formulario al editor TinyMCE<br />
view::partial('tinymce_simple'); <br />
<br />
?><br />
</source><br />
<br />
Es importante recalcar que se debe incluir el partial luego de haber definido el texarea. de lo contrario no se asociara a dicho textarea<br />
<br />
'''Resultado'''<br />
<br />
[[Archivo: Formulario_con_TinyMCE.jpg]]<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Integrar_KumbiaPHP_Spirit_con_TinyMCE&diff=2571Integrar KumbiaPHP Spirit con TinyMCE2010-04-22T20:38:17Z<p>IBet7o: /* Llamado al editor mediante un partial */</p>
<hr />
<div>[http://tinymce.moxiecode.com/ TinyMCE] es un editor [http://es.wikipedia.org/wiki/WYSIWYG WYSIWYG] de reconocimiento mundial que a los desarrolladores nos resulta muy útil para proporcionar un editor de texto a los usuarios, fácil de usar, rápido y con controles intuitivos. ''Recordemos que se maneja bajo la licencia LGPL''<br />
<br />
En este tutorial veremos como podemos integrarlo (TinyMCE) a nuestro APP con KumbiaPHP.<br />
<br />
<br />
<br />
== Instalar TinyMCE ==<br />
<br />
Luego de tener Kumbiaphp en nuestro servidor, descargaremos el editor desde la [http://tinymce.moxiecode.com/download.php web Oficial] seleccionamos la opción mas conveniente. Para el caso descargaremos Main package<br />
<br />
Al descargarlo y descomprimirlo tenemos:<br />
<br />
[[Archivo: Dibujo1.jpg]]<br />
<br />
La carpeta Examples viene con ejemplos de como incluir el editor de varias formas, personalizando las barras de herramientas temas y layout.<br />
<br />
La carpeta scripts contiene la carpeta '''tiny_mce''' es esta carpeta y su contenido que debemos subir a nuestro APP de KumbiaPHP. Lo haremos en la carpeta public/javascript<br />
<br />
[[Archivo: Directorios_javascript.jpg ]]<br />
<br />
== Llamado al editor mediante un partial ==<br />
<br />
Ahora debemos llamar dicho script desde el formulario que tengamos en kumbiaphp y para facilitar el proceso usaremos un Partial (views/partials/tinymce_simple.phtml)<br />
<br />
Mediante el uso del Helper javascript_include_tag(); estamos incluyendo la librería principal de TinyMCE que tiene por nombre tiny_mce.js<br />
<source lang=php line><br />
<?php<br />
echo javascript_include_tag('tiny_mce/tiny_mce');<br />
?><br />
</source><br />
<br />
<br />
''Contenido de:'' views/partials/tinymce_simple.phtml <br />
<source lang=javascript><br />
<?php<br />
echo javascript_include_tag('tiny_mce/tiny_mce');<br />
?><br />
<br />
<script language="javascript" type="text/javascript"><br />
<br />
tinyMCE.init({<br />
mode : "textareas",<br />
theme : "advanced",<br />
//language : "es",<br />
remove_linebreaks : false,<br />
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,separator,sup,sub,separator,bullist,numlist,formatselect,undo,redo,link,unlink,image,visualaid,charmap,cleanup,code,separator,emotions,forecolor,backcolor,|,justifyleft,justifycenter,justifyright,justifyfull,",<br />
theme_advanced_buttons2 : "",<br />
theme_advanced_buttons3 : "",<br />
theme_advanced_toolbar_location : "top",<br />
theme_advanced_toolbar_align : "left",<br />
theme_advanced_path_location : "",<br />
//extended_valid_elements : //"a[name|href|target|title],img[class|src|border=0|alt|title|hspace|<br />
//vspace|width|height|align|name], hr[class|width|size|noshade],span[class]",<br />
entity_encoding : "raw",<br />
relative_urls : false,<br />
<br />
theme_advanced_statusbar_location : "bottom",<br />
theme_advanced_resizing : true,<br />
<br />
skin : "o2k7",<br />
skin_variant : "black",<br />
plugins : "emotions",<br />
<br />
});<br />
</script><br />
</source><br />
<br />
Luego de tener el partial y todo el contenido de tinyMCE en nuestro servidor procedemos a aplicarlo en un formulario que tengamos. El partial anterior hara que los TexArea de los formularios contengan un editor de texto con el formato que se especifica en el Partial.<br />
<br />
== Ejecución del editor TinyMCE en un formulario ==<br />
<br />
Como podemos ver en este formulario, el textarea_tag no incluye nunca una referencia al editor TinyMCE, es el partial quien se encarga de asociarlo. (El formulario puede estar incluido en una vista cualquiera)<br />
<br />
''Formulario de ejemplo:''<br />
<br />
<source lang=php line><br />
<table><br />
<tr><br />
<td>Titulo</td><br />
<td><?php echo text_field_tag(array('blog.titulo'),"size: 40","maxlength: 145") ?></td><br />
</tr><br />
<tr><br />
<td>Articulo</td><br />
<td><?php echo textarea_tag('blog.articulo',"cols: 80", "rows: 20"); ?></td><br />
</tr><br />
<tr><br />
<td>Tags</td><br />
<td><?php echo text_field_tag(array('blog.tags')) ?></td><br />
</tr><br />
<tr><br />
<td>&nbsp;</td><br />
<td><?php echo submit_tag('Publicar articulo') ?></td><br />
</tr><br />
</table><br />
<?php echo end_form_tag();<br />
echo link_to("blog/index","Ir al inicio");<br />
<br />
//Aqui llamamos al partial que asociara un area de texto de este formulario al editor TinyMCE<br />
view::partial('tinymce_simple'); <br />
<br />
?><br />
</source><br />
<br />
Es importante recalcar que se debe incluir el partial luego de haber definido el texarea. de lo contrario no se asociara a dicho textarea<br />
<br />
'''Resultado'''<br />
<br />
[[Archivo: Formulario_con_TinyMCE.jpg]]<br />
<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
[[Categoría:Views]]<br />
[[Categoría:Partials]]</div>IBet7ohttps://wiki.kumbiaphp.com/index.php?title=Como_ejecutar_sentencia_JOIN_en_un_find()_en_KumbiaPHP_Framework&diff=2568Como ejecutar sentencia JOIN en un find() en KumbiaPHP Framework2010-04-21T22:24:30Z<p>IBet7o: /* Creamos nuestra Vista */</p>
<hr />
<div>La sentencia JOIN en SQL permite combinar registros de dos o más tablas en una base de datos relacional. En el Lenguaje de Consultas Estructurado (SQL), hay tres tipo de JOIN: interno, externo, y cruzado.<br />
<br />
Debemos crear las dos tablas para realizar con el find unas consultas con el JOIN<br />
<br />
== Creamos Nuestras tablas y le agregamos registros ==<br />
<source lang=sql><br />
CREATE TABLE username(<br />
id int(11) NOT NULL AUTO_INCREMENT,<br />
username varchar(50) NOT NULL,<br />
usuario_id int(11) NOT NULL,<br />
PRIMARY KEY (id)<br />
)<br />
<br />
-- Volcar la base de datos para la tabla `username`<br />
<br />
INSERT INTO username(`id`, `username`, `usuario_id`) VALUES<br />
(1, 'lmarcano', 3),<br />
(2, 'eperez', 1),<br />
(3, 'jlinares', 0);<br />
<br />
<br />
CREATE TABLE usuario(<br />
id int(11) NOT NULL AUTO_INCREMENT,<br />
nombres varchar(100) NOT NULL,<br />
departamento varchar(100) NOT NULL,<br />
PRIMARY KEY (id)<br />
)<br />
<br />
-- Volcar la base de datos para la tabla `usuario`<br />
<br />
INSERT INTO usuario (`id`, `nombres`, `departamento`) VALUES<br />
(1, 'Elena Perez', 'Administracion'),<br />
(2, 'Carlos Beltran', 'Presidencia'),<br />
(3, 'Luis Marcano', 'Auditoria');<br />
</source><br />
<br />
== Creando nuestros Modelos == <br />
Ahora creamos nuestros modelos<br />
'''''[app]/models/username.php:'''''<br />
<source lang="php" line><br />
<?php<br />
class Username extends ActiveRecord<br />
{<br />
}<br />
</source><br />
'''''[app]/models/usuario.php:'''''<br />
<source lang="php" line><br />
<?php<br />
class Usuario extends ActiveRecord<br />
{ <br />
public function getInnerJoin(){<br />
return $this->find('columns: usuario.id, nombres, departamento, username',<br />
'join: inner join username on usuario.id = username.usuario_id');<br />
}<br />
<br />
public function getLeftJoin(){<br />
return $this->find('columns: usuario.id, nombres, departamento, username',<br />
'join: left outer join username on usuario.id = username.usuario_id');<br />
} <br />
<br />
public function getRightJoin(){<br />
return $this->find('columns: usuario.id, nombres, departamento, username',<br />
'join: right outer join username on usuario.id = username.usuario_id');<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Aquí mostramos los distintos métodos como podemos utilizar el [[Consultas#find | find()]], para relacionar dos o mas tablas tablas en una consulta.<br />
<br />
== Creamos nuestro Controller ==<br />
<br />
'''''[app]/controller/usuario_controller.php:'''''<br />
<source lang="php" line><br />
<?php<br />
<br />
class UsuarioController extends ApplicationController{<br />
<br />
public function index(){<br />
<br />
$this->inner = $this->Usuario->getInnerJoin();<br />
$this->left = $this->Usuario->getleftJoin();<br />
$this->right = $this->Usuario->getrightJoin();<br />
}<br />
}<br />
<br />
?><br />
</source><br />
<br />
== Creamos nuestra Vista ==<br />
'''''[app]/views/usuario/index.phtml:'''''<br />
<source lang="php" line><br />
<h2>Consulta con el Inner Join</h2><br />
<center><br />
<table border='1'><br />
<tr><br />
<th>Username</th><br />
<th>Nombre del Usuario</th><br />
<th>Departamento</th><br />
</tr><br />
<?php foreach($inner As $i): ?><br />
<?php echo tr_color('#ff0000', '#fff')?><br />
<td><?php echo $i->username ?></td><br />
<td><?php echo $i->nombres ?></td><br />
<td><?php echo $i->departamento ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
<br /><br />
<h2>Consulta con el Left Outer Join</h2><br />
<table border='1'><br />
<tr><br />
<th>Username</th><br />
<th>Nombre del Usuario</th><br />
<th>Departamento</th><br />
</tr><br />
<?php foreach($left As $i): ?><br />
<?php echo tr_color('#ff0000', '#fff')?><br />
<td><?php echo $i->username ?></td><br />
<td><?php echo $i->nombres ?></td><br />
<td><?php echo $i->departamento ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
<br /><br />
<h2>Consulta con el Right Outer Join</h2><br />
<table border='1'><br />
<tr><br />
<th>Username</th><br />
<th>Nombre del Usuario</th><br />
<th>Departamento</th><br />
</tr><br />
<?php foreach($right As $i): ?><br />
<?php echo tr_color('#ff0000', '#fff')?><br />
<td><?php echo $i->username ?></td><br />
<td><?php echo $i->nombres ?></td><br />
<td><?php echo $i->departamento ?></td><br />
</tr><br />
<?php endforeach; ?><br />
</table><br />
</center><br />
</source><br />
<br />
== Screenshots ==<br />
[[Archivo:Screenshots.jpg|800px]]<br />
[[Categoría:Tutoriales KumbiaPHP]]<br />
<br />
Realizado por: Hector Rodriguez (Al3jandro)</div>IBet7o