Codeigniter

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