Edición de «KumbiaPHP Framework Versión 1.0 Beta2»

Saltar a: navegación, buscar

Advertencia: No has iniciado sesión. Tu dirección IP será visible públicamente si haces cualquier edición. Si inicias sesión o creas una cuenta, tus ediciones se atribuirán a tu nombre de usuario, junto con otros beneficios.

La edición puede deshacerse. Antes de deshacer la edición, comprueba la siguiente comparación para verificar que realmente es lo que quieres hacer, y entonces guarda los cambios para así deshacer la edición.
Revisión actual Tu texto
Línea 50: Línea 50:
 
Ejemplo: 'app/views/partials/menu.phtml' pasara al directorio 'app/views/_shared/partials/menu.phtml'
 
Ejemplo: 'app/views/partials/menu.phtml' pasara al directorio 'app/views/_shared/partials/menu.phtml'
 
(pueden ver el ejemplo básico dentro de su app con el partial footer.phtml que se encuentra en dicho directorio)
 
(pueden ver el ejemplo básico dentro de su app con el partial footer.phtml que se encuentra en dicho directorio)
 +
 +
 +
  
 
== Helpers ==
 
== Helpers ==
Los helpers (ayudas) se usan en los views. Encapsulan código en métodos para su fácil reuso.
 
KumbiaPHP ya viene con helpers creados.
 
  
Pero lo realmente útil, es que los usuarios se pueden crear sus propios helpers y colocarlos en app/extensions/helpers/. Y después usarlos tranquilamente en sus views, KumbiaPHP se encarga de cargar transparentemente sus helpers asi como los uses.
 
 
=== Clase Html ===
 
=== Clase Html ===
  
Línea 122: Línea 122:
 
</source>
 
</source>
  
 
==== Html::gravatar() ====
 
Incluye imágenes de http://www.gravatar.com
 
<pre>
 
$email Correo para conseguir su gravatar
 
$alt Texto alternativo de la imagen. Por defecto: gravatar
 
$size Tamaño del gravatar. Un numero de 1 a 512. Por defecto: 40
 
$default URL gravatar por defecto si no existe, o un default de gravatar. Por defecto: mm
 
</pre>
 
<source lang=php>
 
echo Html::gravatar( $email ); // Simple
 
echo Html::link( Html::gravatar($email), $url); // Un gravatar que es un link
 
echo Html::gravatar( $email, $name, 20, 'http://www.example.com/default.jpg'); //Completo
 
</source>
 
  
  
Línea 167: Línea 153:
 
<source lang=php>
 
<source lang=php>
 
Html::meta('Kumbiaphp-team',"name = 'Author'");
 
Html::meta('Kumbiaphp-team',"name = 'Author'");
Html::meta('text/html; charset=UTF-8',"http-equiv = 'Content-type'");
+
charset=UTF-8" http-equiv = 'Content-type'/>
 
echo Html::includeMetatags(); //Visualiza <meta content="Kumbiaphp-team" name = 'Author'/>
 
echo Html::includeMetatags(); //Visualiza <meta content="Kumbiaphp-team" name = 'Author'/>
 
</source>
 
</source>
 +
 +
  
 
==== Html::headLink() ====
 
==== Html::headLink() ====
Línea 182: Línea 170:
  
 
<source lang="php" line>
 
<source lang="php" line>
//Se agrega a la cola de links el enlace a un recurso externo, en este caso la hoja de estilo ubicada en "http://www.kumbiaphp.com/public/style.css"
+
Html::headlink('http://www.kumbiaphp.com/public/style.css',"rel='stylesheet',type='text/css' media='screen'"); //Se agrega a la cola de links el enlace a un recurso externo, en este caso la hoja de estilo ubicada en "http://www.kumbiaphp.com/public/style.css"
Html::headlink('http://www.kumbiaphp.com/public/style.css',"rel='stylesheet',type='text/css' media='screen'");  
+
  
 
/*Agrega a la cola de links "<link rel="alternate" type="application/rss+xml" title="KumbiaPHP Framework RSS Feed" href="http://www.kumbiaphp.com/blog/feed/" />" con lo cual podemos incluir un feed sin usar las convenciones de kumbiaphp */
 
/*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 */
Línea 244: Línea 231:
 
echo Html::includeHeadLinks();
 
echo Html::includeHeadLinks();
 
</source>
 
</source>
 +
 +
 +
  
 
=== '''Clase Tag''' ===
 
=== '''Clase Tag''' ===
Línea 262: Línea 252:
 
Incluye un archivo JavaScript a la vista, partial o template
 
Incluye un archivo JavaScript a la vista, partial o template
 
<source lang=php>
 
<source lang=php>
<?php echo Tag::js('jquery/html5shiv');?>  //Adiciona un archivo javascript (app/public/javascript/jquery/html5shiv.js)
+
<?php echo Tag::js('jquery/jquery.kumbiaphp');?>  //Adiciona un archivo javascript (app/public/javascript/jquery/jquery.kumbiaphp)
// no poner la terminación js
+
// no olvides de poner echo antes de TAG
+
 
</source>
 
</source>
  
Línea 418: Línea 406:
  
 
==== Form::dbSelect() ====
 
==== Form::dbSelect() ====
Crea un select con los datos de la tabla relacionada.
+
Crea campo Select que toma los valores de un array de objetos de ActiveRecord
 +
<pre>
 +
$field nombre de campo
 +
$data array de valores para la lista desplegable
 +
$show campo que se mostrara
 +
$blank campo en blanco
 +
$attrs atributos de campo
 +
$value valor inicial para el campo oculto
  
La forma más simple usa convención, pero se puede configurar también. Ojo, no es necesario instanciar el modelo en el controller.
+
dbSelect($field, $data, $show, $blank = NULL, $attrs = NULL, $value = NULL)
 +
</pre>
  
Ejemplos de uso:
+
Controlador
<source lang=php>Form::dbSelect('model.campo_id');</source>
+
<source lang=php>
Esto carga el modelo(campo) y muestra el primer campo despues del pk(id), ordenado ascendentemente.
+
$usuarios = new Usuarios();
 +
$this->usuarios = $usuarios->find();
 +
</source>
  
El 80-90% casos es suficiente.
+
Vista
 
+
<source lang=php>
Tambien se puede elegir poner en la tabla el siguiente campo (id,usuario,...)(id,ciudad,...)(id,pais,...)
+
echo Form::dbSelect('usuarios.id', $usuarios, 'nombres', '- seleccione -');
(id,departamento,...)(id,nombre,...).
+
</source>
 
+
 
+
Para elegir otro campo, que no es el siguiente al pk.
+
 
+
Queda muy fácil asi:
+
<source lang=php>Form::dbSelect('model.campo_id','campo');</source>
+
En este caso le indigamos el campo a mostrar y se muestra ordenado ascendentemente.
+
 
+
 
+
Para casos especiales también se puede configurar:
+
<source lang=php>Form::dbSelect('model.campo_id','campo',array('modelo','metodo','param'));</source>
+
Campo es el campo a mostrar.
+
El array de datos para la conexión, $modelo->metodo(param).
+
 
+
En este último caso el único parámetro opcional es el 'param'.
+
 
+
KISS KumbiaPHP :).
+
  
 
==== Form::select() ====
 
==== Form::select() ====
Línea 463: Línea 444:
 
echo Form::Select('region', $ar2,'Cuello'); //Crea un campo Select (un combobox) con el nombre 'region' y teniendo preseleccionado 'Cuello'
 
echo Form::Select('region', $ar2,'Cuello'); //Crea un campo Select (un combobox) con el nombre 'region' y teniendo preseleccionado 'Cuello'
 
</source>
 
</source>
Resultado:
+
 
<pre>
+
<select id="region" name="region">
+
<option value="0">Abdomen</option>
+
<option value="1">Brazos</option>
+
[...]
+
</select>
+
</pre>
+
Otra Posibilidad:
+
<source lang=php>
+
$ar2 = array('Abdomen'=>'Abdomen','Brazos'=>'Brazos','Cabeza'=>'Cabeza','Cuello'=>'Cuello','Genitales'=>'Genitales','Piernas'=>'Piernas','Tórax'=>'Tórax','Otros'=>'Otros');
+
echo Form::Select('region', $ar2,'Cuello');
+
</source>
+
Resultado:
+
<pre>
+
<select id="region" name="region">
+
<option value="Abdomen">Abdomen</option>
+
<option value="Brazos">Brazos</option>
+
[...]
+
</select>
+
</pre>
+
  
 
==== Form::file() ====
 
==== Form::file() ====
Línea 499: Línea 460:
 
echo Form::close(); //Cierra el formulario
 
echo Form::close(); //Cierra el formulario
 
</source>
 
</source>
 +
  
 
==== Form::button() ====
 
==== Form::button() ====
Línea 515: Línea 477:
  
 
==== Form::submitImage() ====
 
==== Form::submitImage() ====
Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen deberá estar dentro del directorio '/public/img/'
+
Crea un botón de tipo imagen siguendo las convenciones de kumbiaphp, la imagen devera estar dentro del directorio '/public/img/'
 
<pre>
 
<pre>
 
$img ruta de la imagen que usa el botón
 
$img ruta de la imagen que usa el botón
Línea 526: Línea 488:
 
echo Form::submitImage('botones/edit.gif'); //Crea un botón con la imagen 'botones/edit.gif'
 
echo Form::submitImage('botones/edit.gif'); //Crea un botón con la imagen 'botones/edit.gif'
 
</source>
 
</source>
 +
  
 
==== Form::submit() ====
 
==== Form::submit() ====
Línea 563: Línea 526:
 
$checked indica si se marca el campo
 
$checked indica si se marca el campo
  
check($field, $value, $attrs = NULL, $checked = NULL);
+
check($field, $value, $attrs = NULL, $checked = NULL)
 
</pre>
 
</pre>
  
Línea 585: Línea 548:
 
<source lang=php>
 
<source lang=php>
 
$on = 'masculino';
 
$on = 'masculino';
echo Form::radio("rdo", 'masculino', NULL, TRUE);  //<input id="rdo1" name="rdo" type="radio" value="masculino" checked="checked">
+
echo Form::radio("rdo", 'masculino', $on);  //<input id="rdo1" name="rdo" type="radio" value="masculino" checked="checked">
echo Form::radio("rdo", 'femenino'); //<input id="rdo2" name="rdo" type="radio" value="femenino">
+
echo Form::radio("rdo", 'femenino', $on); //<input id="rdo2" name="rdo" type="radio" value="femenino">
 
</source>
 
</source>
  
Línea 620: Línea 583:
 
Se presenta un ejemplo simple de uso de la libreria Upload.
 
Se presenta un ejemplo simple de uso de la libreria Upload.
  
Modelo '''archivador.php''':
+
Modelo "Archivador":
  
 
<source lang=php>
 
<source lang=php>
Línea 645: Línea 608:
 
</source>
 
</source>
  
Controlador '''archivador_controller.php''':
+
Controlador "ArchivadorController":
  
 
<source lang=php>
 
<source lang=php>
Línea 662: Línea 625:
 
</source>
 
</source>
  
En la vista '''subir.phtml''':
+
En la vista "subir.phtml":
  
 
<source lang=php>
 
<source lang=php>
Línea 678: Línea 641:
 
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:
 
Este adaptador es utilizado para subir archivos de cualquier tipo, por defecto estos se guardan en el directorio '''public/files/upload'''. Este adaptador cuenta con los siguientes métodos:
  
==== save() ====
+
=== save() ===
 
Guarda el archivo subido.
 
Guarda el archivo subido.
  
Línea 694: Línea 657:
 
// Guarda el archivo
 
// Guarda el archivo
 
$file->save();
 
$file->save();
</source>
 
 
==== saveRandom() ====
 
Guarda el archivo subido con un nombre aleatorio. El nombre del archivo se genera con la siguiente instrucción '''md5(time())''', por lo tanto cada nombre de archivo es único.
 
 
<pre>
 
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.
 
 
saveRandom()
 
</pre>
 
 
<source lang=php>
 
$file = Upload::factory('archivo');
 
 
// Guarda el archivo
 
$fileName = $file->saveRandom();
 
</source>
 
 
 
==== isUploaded() ====
 
Verifica si el archivo esta subido de manera que posteriormente se pueda guardar.
 
 
<pre>
 
Retorna (boolean).
 
 
isUploaded()
 
</pre>
 
 
<source lang=php>
 
$file = Upload::factory('archivo');
 
 
if($file->isUploaded()) {
 
    echo 'Archivo listo para guardarse';
 
}
 
 
</source>
 
</source>
  
Línea 819: Línea 748:
 
$file->setExtensions(array('txt', 'dot', 'doc'));
 
$file->setExtensions(array('txt', 'dot', 'doc'));
 
</source>
 
</source>
 
==== Ejemplo ====
 
En el siguiente ejemplo se muestra un caso donde se desea subir archivos de texto al servidor.
 
 
Modelo '''documento.php''':
 
 
<source lang=php>
 
/**
 
* Modelo para subir documentos de texto
 
*
 
*/
 
 
// Carga la libreria Upload
 
Load::lib('upload');
 
 
class Documento
 
{
 
    /**
 
    * Guarda el documento
 
    *
 
    * @return boolean
 
    */
 
    public function guardar()
 
    {
 
        // Instancia con factory un objeto FileUpload
 
        $file = Upload::factory('documento');
 
 
        // Verifica si se subió el documento
 
        if(!$file->isUploaded()) {
 
            return FALSE;
 
        }
 
 
        // Tamaño máximo
 
        $file->setMaxSize('2MB');
 
 
        // Tipos de archivos permitidos
 
        $file->setTypes(array('text/plain', 'application/vnd.oasis.opendocument.text', 'application/msword'));
 
 
        // Extensiones permitidas
 
        $file->setExtensions(array('txt', 'dot', 'doc'));
 
 
        // Guarda el archivo
 
        if($file->save()) {
 
            Flash::valid('Operación Exitosa');
 
            return TRUE;
 
        }
 
 
        return FALSE;
 
    }
 
}
 
</source>
 
 
Controlador '''documento_controller.php''':
 
 
<source lang=php>
 
class DocumentoController extends ApplicationController
 
{
 
    /**
 
    * Accion para subir documento
 
    *
 
    */
 
    public function subir()
 
    {
 
        $documento = Load::model('documento');
 
        $documento->guardar();
 
    }
 
}
 
</source>
 
 
Vista '''subir.phtml''':
 
 
<source lang=php>
 
<?php View::content() ?>
 
 
<h1>Subir Documento</h1>
 
 
<?php echo Form::openMultipart() ?>
 
  <?php echo Form::file('documento') ?>
 
  <?php echo Form::submit('Subir') ?>
 
<?php echo Form::close() ?>
 
</source>
 
 
=== Adaptador Image ===
 
Este adaptador es utilizado para subir archivos de imagen, por defecto estos se guardan en el directorio '''public/img/upload'''. Este adaptador cuenta con los siguientes métodos:
 
 
==== save() ====
 
Guarda el archivo subido.
 
 
<pre>
 
$name (string): nombre con el que se guardará el archivo de imagen, por defecto se guarda con su nombre original.
 
 
Retorna (boolean).
 
 
save($name = NULL)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
 
// Guarda la imagen
 
$img->save();
 
</source>
 
 
==== saveRandom() ====
 
Guarda el archivo de imagen subido con un nombre aleatorio. El nombre del archivo se genera con la siguiente instrucción '''md5(time())''', por lo tanto cada nombre de archivo es único.
 
 
<pre>
 
Retorna (boolean | string): si es exitoso retorna el nombre del archivo generado, si falla retorna FALSE.
 
 
saveRandom()
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
 
// Guarda el archivo
 
$fileName = $img->saveRandom();
 
</source>
 
 
 
==== isUploaded() ====
 
Verifica si el archivo de imagen esta subido de manera que posteriormente se pueda guardar.
 
 
<pre>
 
Retorna (boolean).
 
 
isUploaded()
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
 
if($img->isUploaded()) {
 
    echo 'Archivo listo para guardarse';
 
}
 
</source>
 
 
==== setPath() ====
 
Asigna la ruta al directorio de destino para el archivo de imagen. Por defecto se considera '''public/img/upload'''.
 
 
<pre>
 
$path (string): ruta de destino
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
 
// Nueva ruta de destino
 
$img->setPath(APP_PATH . 'temp/fotos');
 
</source>
 
 
==== setAllowScripts() ====
 
Indica si se permite subir archivos scripts ejecutables (php, phtml, php3, php4, js, shtml, pl, py, rb, rhtml). Por defecto no esta permitido.
 
 
<pre>
 
$value (boolean): indica si se permite subir o no scripts.
 
 
setAllowScripts($value)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
 
// Esto se hace bajo propio riesgo.
 
$img->setAllowScripts(TRUE);
 
</source>
 
 
==== setMinSize() ====
 
Indica el tamaño mínimo permitido para el archivo de imagen.
 
 
<pre>
 
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".
 
 
setMinSize($size)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
$img->setMinSize('0.3 MB');
 
</source>
 
 
==== setMaxSize() ====
 
Indica el tamaño máximo permitido para el archivo.
 
 
<pre>
 
$size (string): tamaño del archivo (B, KB, MB, GB, PB). Ejemplo: "0.3 MB".
 
 
setMaxSize($size)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
$img->setMaxSize('1 MB');
 
</source>
 
 
==== setTypes() ====
 
Indica los tipos de archivos de imagen permitidos.
 
 
<pre>
 
$value (array): lista de tipos de archivos de imagen permitidos según estándar MIME. Ejemplo: "jpg".
 
 
setTypes($value)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
 
// Archivos de imágenes
 
// Para una mayor referencia del estándar MIME: http://www.w3schools.com/media/media_mimeref.asp
 
$img->setTypes(array('jpeg', 'gif', 'png'));
 
</source>
 
 
==== setExtensions() ====
 
Indica las extensiones de archivos permitidas.
 
 
<pre>
 
$value (array): lista de extensiones para archivos. Ejemplo: "png".
 
 
setExtensions($value)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
 
// Formatos de Imagenes
 
$img->setExtensions(array('jpg', 'gif', 'png'));
 
 
</source>
 
 
==== setMinWidth() ====
 
Indica el ancho mínimo en pixeles permitido para el archivo de imagen.
 
 
<pre>
 
$value (int): ancho en pixeles.
 
 
setMinWidth($value)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
$img->setMinWidth(200);
 
</source>
 
 
==== setMaxWidth() ====
 
Indica el ancho máximo en pixeles permitido para el archivo de imagen.
 
 
<pre>
 
$value (int): ancho en pixeles.
 
 
setMaxWidth($value)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
$img->setMaxWidth(200);
 
</source>
 
 
==== setMinHeight() ====
 
Indica el alto mínimo en pixeles permitido para el archivo de imagen.
 
 
<pre>
 
$value (int): alto en pixeles.
 
 
setMinHeight($value)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
$img->setMinHeight(200);
 
</source>
 
 
==== setMaxHeight() ====
 
Indica el alto máximo en pixeles permitido para el archivo de imagen.
 
 
<pre>
 
$value (int): alto en pixeles.
 
 
setMaxHeight($value)
 
</pre>
 
 
<source lang=php>
 
$img = Upload::factory('imagen', 'image');
 
$img->setMaxHeight(200);
 
</source>
 
 
==== Ejemplo ====
 
En el siguiente ejemplo se muestra un caso donde se desea subir una foto a un servidor.
 
 
Modelo '''foto.php''':
 
 
<source lang=php>
 
/**
 
* Modelo para subir fotos
 
*
 
*/
 
 
// Carga la libreria Upload
 
Load::lib('upload');
 
 
class Foto
 
{
 
    /**
 
    * Guarda el documento
 
    *
 
    * @return boolean
 
    */
 
    public function guardar()
 
    {
 
        // Instancia con factory un objeto ImageUpload
 
        $img = Upload::factory('foto', 'image');
 
 
        // Verifica si se subió la imagen
 
        if(!$img->isUploaded()) {
 
            return FALSE;
 
        }
 
 
        // Tamaño máximo
 
        $img->setMaxSize('2MB');
 
 
        // Tipos de imagenes permitidas
 
        $img->setTypes(array('jpg', 'png'));
 
 
        // Extensiones permitidas
 
        $img->setExtensions(array('jpg', 'png'));
 
 
        // Guarda la imagen
 
        if($img->save()) {
 
            Flash::valid('Operación Exitosa');
 
            return TRUE;
 
        }
 
 
        return FALSE;
 
    }
 
}
 
</source>
 
 
Controlador '''foto_controller.php''':
 
 
<source lang=php>
 
class FotoController extends ApplicationController
 
{
 
    /**
 
    * Accion para subir foto
 
    *
 
    */
 
    public function subir()
 
    {
 
        $foto = Load::model('foto');
 
        $foto->guardar();
 
    }
 
}
 
</source>
 
 
Vista '''subir.phtml''':
 
 
<source lang=php>
 
<?php View::content() ?>
 
 
<h1>Subir Foto</h1>
 
 
<?php echo Form::openMultipart() ?>
 
  <?php echo Form::file('foto') ?>
 
  <?php echo Form::submit('Subir') ?>
 
<?php echo Form::close() ?>
 
</source>
 
 
== Libreria Session ==
 
 
A la libreria Session se le modifican sus métodos quedando de la siguiente forma:
 
 
=== Session::set() ===
 
Crear o especifica el valor para un indice de la sesión actual.
 
 
<pre>
 
$index      Nombre para el indice.
 
$value      Valor a almacenar.
 
$namespace  Espacio individual donde se almacenara el indice.
 
 
Session::set($index, $value, $namespace='default')
 
</pre>
 
 
<source lang=php>
 
/* Ejemplo */
 
Session::set('usuario', 'Administrador'); // Genera el indice 'usuario' que contendra 'Administrador'.
 
</source>
 
 
=== Session::get() ===
 
Obtiene el valor para un indice de la sesión actual.
 
 
<pre>
 
$index      Nombre del indice a obtener.
 
$namespace  Espacio individual donde se almacena el indice.
 
 
Session::get($index, $namespace='default')
 
</pre>
 
 
<source lang=php>
 
/* Ejemplo */
 
echo Session::get('usuario'); // Pinta 'Administrador'.
 
</source>
 
 
=== Session::delete() ===
 
Elimina el valor para un indice de la sesión actual.
 
 
<pre>
 
$index      Nombre del indice a eliminar.
 
$namespace  Espacio individual donde se almacena el indice.
 
 
Session::delete($index, $namespace='default')
 
</pre>
 
 
<source lang=php>
 
/* Ejemplo */
 
Session::delete('usuario'); // Elimina el indice 'usuario'.
 
</source>
 
 
=== Session::has() ===
 
Verifica que este definido el indice en la sesión actual.
 
 
<pre>
 
$index      Nombre del indice a verificar.
 
$namespace  Espacio individual donde se almacena el indice.
 
 
Session::has($index, $namespace='default')
 
</pre>
 
 
<source lang=php>
 
/* Ejemplo */
 
Session::has('id_usuario'); // Retorna FALSE.
 
</source>
 
 
NOTA: '''$namespace''' es un espacio individual en el cual se pueden contener las variables de sesión, permitiendo evitar colisiones con nombres de variables.
 

Por favor observa que todas las contribuciones a KumbiaPHP Framework Wiki se consideran hechas públicas bajo la Attribution-Share Alike 3.0 Unported (véase KumbiaPHP Framework Wiki:Derechos de autor para más detalles). Si no deseas la modificación y distribución libre de tu obra, entonces no la pongas aquí.
También nos aseguras que tú escribiste esto y te pertenecen de los derechos de autor, o lo copiaste desde el dominio público u otra fuente libre. ¡No uses escritos con copyright sin permiso!

Cancelar | Ayuda de edición (se abre en una ventana nueva)