Codeigniter

Minificar código HTML desde Codeigniter

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

La minificación se refiere a la eliminación de bytes innecesarios, como los espacios adicionales, saltos de línea y sangrías. Al minimizar los códigos HTML se puede acelerar la carga de una página web.

Podemos utilizar multiples herramientas online, preprocesadores, entre otros para generar una versión optimizada del código HTML. En esta oportunidad permítame mostrarle como minificar nuestro código HTML desde el framework codeigniter; usaremos un método donde eliminaremos espacios en blanco innecesarios del HTML generado, excepto Javascript. Sin más empecemos:

1.- Modificar config.php

En el archivo de configuración aplication/config/config.php modificar la variable enable_hooks de FALSE a TRUE.

$config['enable_hooks'] = TRUE;

2.- Modificar hooks.php

Ubicar los el archivo aplication/config/hooks.php y adicionar las siguientes líneas de código:


$hook['display_override'][] = array(
'class' => '',
'function' => 'compress',
'filename' => 'compress.php',
'filepath' => 'hooks'
);

3.- Crear compress.php

Crear el archivo aplication/hooks/compress.php y pegar el siguiente código php:


function compress(){
ini_set("pcre.recursion_limit", "16777");
$CI =& get_instance();
$buffer = $CI->output->get_output();
$re = '%# Collapse whitespace everywhere but in blacklisted elements.
(?> # Match all whitespans other than single space.
[^\S ]\s* # Either one [\t\r\n\f\v] and zero or more ws,
| \s{2,} # or two or more consecutive-any-whitespace.
) # Note: The remaining regex consumes no text at all...
(?= # Ensure we are not in a blacklist tag.
[^<]*+ # Either zero or more non-"<" {normal*}
(?: # Begin {(special normal*)*} construct
< # or a < starting a non-blacklist tag.
(?!/?(?:textarea|pre|script)\b)
[^<]*+ # more non-"<" {normal*}
)*+ # Finish "unrolling-the-loop"
(?: # Begin alternation group.
textarea|pre|script)\b
| \z # or end of file.
) # End alternation group.
) # If we made it here, we are not in a blacklist tag.
%Six';
$new_buffer = preg_replace($re, " ", $buffer);
if ($new_buffer === null){
$new_buffer = $buffer;
}
$CI->output->set_output($new_buffer);
$CI->output->_display();
}

4.- Verificar cambios.

Guarde los cambios realizados y verifique el código fuente de su página web desde el navegador.

Si no notas los resultados, por favor borra la cache de tu navegador y vuelve a verificar el código fuente.

Referencia:

https://github.com/juanjus98/Minificar-codigo-HTML-desde-Codeigniter

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Usar La libreria PHPMAILER en CODEIGNITER

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Al poco tiempo que comence a usar codeigniter se me habia presentado la necesidad de usar la libreria phpmailer que ya es parte de nuestra tipica librerias preferidas a la hora de desarrollar un proyecto por lo bueno que llega a ser.

antes de comenzar debes ya tener la libreria phpmailer descargada y tener listo una instalado el codeigniter y nos vamos a la carpeta libraries que es el lugar donde debemos colocar la carpeta que nos da la libreria phpmailer y debe quedar asi.

instalar_phpmailer_codeigniter

ahora que lo tenemos instalado codeigniter nunca se enterara que existe si no le indicamos y para eso debemos ir a autoload.php que se encuentra en config

ubicar_autoload_codeigniter

puedes tener cargada algunas librerias por defecto

$autoload['libraries']=array('template','session','database');

pero falta agregar la de phpmailer.

$autoload['libraries']=array('template','session','database','phpmailer');

hasta ahora vamos bien pero falta lo que a muchos confunde que es el amarre que se debe hacer en la carpeta libraries y creamos un archivo My_phpmailer.php con el siguiente codigo que en realidad creamos una libreria para codeigniter que dentro de la libreria hacemos un include de el core del phpmailer.

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class My_PHPMailer {
    public function My_PHPMailer() {
        require_once('PHPMailer/class.phpmailer.php');
    }
}

si colocaste todo en su sitio no es necesario que modifiques la ruta que damos en el require_once y con esto ya podemos usar nuestra libreria en cualquier control por ejemplo:

 public function envio()
{
        $mail = new PHPMailer();
        $mail->SetLanguage('es');
        $mail->FromName = "luisrodriguez.pe";
        $mail->From = "no-reply@luisrodriguez.pe";
        $mail->Subject = "asunto del mensaje";
        $mail->AddAddress("luizmirodriguez@gmail.com");
        $mail->Body = "cuerpo de mensaje";
        $mail->IsHTML(true);
        $mail->Send();
}

espero que les ayude y cualquier duda en los comentarios de abajo.

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

libreria para mantenimientos CRUD en codeigniter

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

En poco tiempo se usar codeigniter realmente me gusto usarla por lo flexible y una forma clara de escribir el codigo. Pero tambien trabajo mucho con el framework KUMBIAPHP que no es nada malo pero no tiene mucha comunidad su crecimiento se da pero poco a poco pero este framework tiene una clase en el core que nos ayuda hacer muy facil los mantenimientos y al ver que codeigniter no cuenta con ellos escribi una libreria muy simple pero capas de ayudar al proceso del desarrollo de nuestros mantenimientos.

lo pueden bajar desde github
https://github.com/luizrodriguez/Codeigniter-class-mantenimiento

 

Como usar la libreria mantenimiento para codeigniter?

  1. para instalar debemos colocar el archivo Mantenimiento.php en la siguiente ruta  \application\libraries
  2. debemos cargar la libreria y para ello buscamos en la carpeta \application\config el archivo autoload.php y ahi un array llamado $autoload[‘libraries’] y le agregamos el nombre de nuestra libreria “mantenimiento” y quedaria algo asi $autoload[‘libraries’] = array(‘database’,’mantenimiento’);
  3. ahora en la misma variable array que cargamos mantenimiento tambien debemos cargar la libreria de session $autoload[‘libraries’] = array(‘database’,’session’,’mantenimiento’); por que la libreria lo necesita

Ejemplo:

NUEVO

como la libreria necesita un array para que le pasemos la manera mas factible es hacer que los input sean array donde en el ejemplo se ve que al nombre del input es usuarios[nombre] donde usuarios seria el nombre de la tabla y nombre el campo donde se va ingresar el valor del input
view
views/usuarios/nuevo

< input type=”submit” value=”grabar” />

Controller
controllers/usuarios

public function  nuevo()
{
     if ($this-&gt;input-&gt;post("usuarios"))
    {
           $post=$this-&gt;input-&gt;post("usuarios");
           $data["tabla"]="usuarios"
           $this-&gt;mantenimiento-&gt;agregar($post,$data["tabla"]);
           redirect("usuarios/lista_usuarios");
    }
}

EDITAR

como la libreria necesita un array para que le pasemos la manera mas factible es hacer que los input sean array donde en el ejemplo se ve que al nombre del input es usuarios[nombre] donde usuarios seria el nombre de la tabla y nombre el campo donde se va ingresar el valor del input
view
views/usuarios/actualizar

< input type=”submit” value=”grabar” />

Controller
controllers/usuarios

public function  actualizar()
{
     if ($this-&gt;input-&gt;post("usuarios"))
    {
           $post=$this-&gt;input-&gt;post("usuarios");
           $data["tabla"]="usuarios"
           $this-&gt;mantenimiento-&gt;editar($post,$data["tabla"]);
           redirect("usuarios/lista_usuarios");
    }
}

ELIMINAR

como la libreria necesita un array para que le pasemos la manera mas factible es hacer que los input sean array
view
views/usuarios/lista_usuarios

aqui coloco un tipico listado con 2 formas de eliminar un registros por un checkbox y podemos eliminar varios con marcados o uno por uno con muestra el link que esta en la ultima columna de la tabla

Controller
controllers/eliminar

public function  eliminar($id=null)
{
     //si lo hace por los checkbox serviria esto
     if ($this-&gt;input-&gt;post("items"))
    {
           $ids=$this-&gt;input-&gt;post("items");
           $data["tabla"]="usuarios"
           $this-&gt;mantenimiento-&gt;eliminar($ids,$data["tabla"]);
           redirect("usuarios/lista_usuarios");
    }
    if ($id!=null)
    {
      $this-&gt;mantenimiento-&gt;eliminar($id,$data["tabla"]);
    }
 
}

y para mostrar el mensaje que viene por defecto en la libreria en donde quieran mostrarlo deben imprimir

echo $this-&gt;session-&gt;userdata("mensaje");

y si lo quieres mostrar directamente en la vista

$CI = &amp; get_instance();
echo $CI-&gt;session-&gt;userdata("mensaje");
Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Tipicas preguntas de Codeigniter

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
  • Como eliminar el index.php que lleva por defecto

    creas en la raiz del proyecto un archivo .httacess con el sigueinte contenido

    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|assets|robots|css|fonts|js|img\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]

    en el archivo config.php debes modificar la linea 17 que a lo mejor cambia en otras version

    $config['index_page'] = '';
  • Donde coloco mis imagenes, css, javascript, fonts, etc

    codeigniter no dejo nos tiene ninguna carpeta para colocarlos asi que en la raiz podemos crear una carpeta para colocarlos o poder crear en la raiz todas las carpetas para nuestros archivos que usaremos en la web.

  • Como usar sessiones en codeigniter

    abres el archivo \application\config\autoload.php y activamos las sesiones que son debe buscar la variable $autoload[‘libraries’]

    $autoload['libraries'] = array('session');

    luego vas al archivo \application\config\config.php y buscas la variable $config[‘encryption_key’] y le das cualquier valor por ejemplo

    $config['encryption_key'] = 'lkjsdlkfjsd$$$dpfkñsdlkfñl';
  • Codeignietr me muestra una pagina en blanco sin errores

    esto me sucedio muchas veces y dejamos en el archivo \index.php (el el index que se encuentra en la raiz de codeigniter) como desarrollo “development” pero extrañamente no muestra ningun error y entonces por que lo hace? en realidad si ahi error como te imaginabas pero no lo muestra.

    ahi que agregar una linea de codigo a estas lineas

    if (defined('ENVIRONMENT'))
    {
    	switch (ENVIRONMENT)
    	{
    		case 'development':
                            error_reporting(E_ALL);
    		break;
     
    		case 'testing':
    		case 'production':
    			error_reporting(0);
    		break;
     
    		default:
    			exit('The application environment is not set correctly.');
    	}
    }

    asi debe quedar

    if (defined('ENVIRONMENT'))
    {
    	switch (ENVIRONMENT)
    	{
    		case 'development':
                            error_reporting(E_ALL);
                            ini_set('display_errors', 1);
    		break;
     
    		case 'testing':
    		case 'production':
    			error_reporting(0);
    		break;
     
    		default:
    			exit('The application environment is not set correctly.');
    	}
    }

    con esto ya nos debe mostrar el error

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more