segunda-feira, 29 de setembro de 2014

Templates no Codeigniter Parte02 (Personalização)

//application/libraries/Template.php

function view($page, $data = null){
      if(!is_null($page) && $page != ''){
        $title = !isset($data['titulo']) || is_null($data['titulo']) || empty($data['titulo']) ? $this->title : $data['titulo'];
        $this->write('title', trim($title));
        $this->write_view('content', $page, $data);
        $this->render();
      }
      else{
        die('Template => Pagina em branco!');
      }
   }

//application/controllers/usuario.php

public function index(){
//dados
$dados['dados'] = array('nome' => 'João da Silva', 'idade' => 30);
                        //titulo da página
                        $dados['titulo'] = 'Lista de Usuários';
//padronizando o caminho da página
$pagina = 'usuario/lista';
//chamando a pagina pelo template
$this->template->view($pagina, $this->dados);
}

quinta-feira, 25 de setembro de 2014

Templates no Codeigniter Parte01 (Instalação/Configurações)

1- Fazer o download da library Template em:
http://williamsconcepts.com/ci/codeigniter/libraries/template/download.html

2 - Colocar os arquivos nas suas pastas respectivas
/libraries/Template.php para /application/system/libraries/
/config/template.php para /application/config/
/views/template.php para /application/views/

3 -  Em /config/template.php adicionar o valor "title":

$template['default']['regions'] = array(
   'title',
   'header',
   'content',
   'footer',
);

4 - No método do controller adiocionar as chamadas do template:

public function index(){
       //carregando a biblioteca
       $this->load->library('template');
       //array de dados para serem mostrados na view
       $data = array('blog' => 'phpephp.blogspot.com', 'post' => 'Templates no Codeigniter');
        //passando os parâmetros para o template
        $this->template->write('title', 'Templates no Codeigniter');
        $this->template->write('header', 'Cabeçalho do template');
        $this->template->write_view('content', 'pasta/nome_da_view', $data);
        $this->template->write('footer', 'Rodapé do template');
        //chamando o template/página
        $this->template->render();
}

5 - No arquivo de view colar o código:

<?php   
    echo 'Blog: '.$blog;
    echo '<br>Post: '.$post.'<br>';
?>

6 - Verifique se o arquivo  /application/views/template.php está assim:

<html>
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title><?= $title ?></title>
      <link rel="stylesheet" type="text/css" href="main.css" />
   </head>
   <body>
      <div id="wrapper">
         <div id="header">
            <?= $header ?>
         </div>
         <div id="main">
            <div id="content">
               <h2><?= $title ?></h2>
               <div class="post">
                  <?= $content ?>
               </div>
            </div>           
         </div>
         <div id="footer">
            <?= $footer ?>
         </div>
      </div>
   </body>
</html>

segunda-feira, 22 de setembro de 2014

Estrutura Codeigniter - Parte03 (Helper)

<?php

//padronizando o caminho da página pelo módulo
function setPage($module, $page){
if(!is_null($module) || !empty($module)){
if(!is_null($page) || !empty($page)){
return strtolower($module.'/'.$page);
}
else{
die('Pagina nao encontrada!');
}
}
else{
die('Modulo nao encontrado!');
}
}

?>

sexta-feira, 19 de setembro de 2014

Estrutura Codeigniter - Parte02 (Controller)

<?php

class Usuario extends CI_Controller{

//array dados da classe
private $data = array();

public function __construct(){
parent::__construct();
$this->load->model('usuario_model', 'usuario');
$this->data['module'] = __CLASS__;
}

/********************métodos principais********************/

//mostrando a lista de registros
public function index(){
//selecionando os dados
$this->data['usuarios'] = $this->usuario->findAll();
//padronizando o caminho da página
$page = setPage($this->data['module'], 'lista');
//chamando a page pelo template
$this->template->view($page, $this->data);
}

//cadastrando ou alterando o registro
public function edit($id=null){
$page = setPage($this->data['module'], 'form');
//se formulário for submetido
if($this->input->post()){
//setando os valores a serem enviado ao bd
$data= $this->setData($this->input->post());
//alteracao
if(!is_null($id)){
$this->usuario->update($id, $data);
}
//cadastro
else{
$this->usuario->insert($data);
}
$this->index();
}
else{
//alteracao
$data=array();
if(!is_null($id)){
$data = $this->usuario->findById($id);
}
//setando os valores vindos do bd
$this->data['data'] = $this->setData($data);
//page do formulário
$this->template->view($page, $this->data);
}
}

//excluindo o registro
public function delete($id){
$this->usuario->delete($id);
$this->index();
}

/********************métodos auxiliares********************/

//setando os valores
private function setData($data=array()){
$values= array(
'usuario_id' => isset($data['usuario_id']) ? $data['usuario_id'] : null,
'usuario_nome' => isset($data['usuario_nome']) ? $data['usuario_nome'] : null,
'usuario_email' => isset($data['usuario_email']) ? $data['usuario_email'] : null,
'usuario_senha' => isset($data['usuario_senha']) ? md5($data['usuario_senha']) : null,
);
return $values;
}

}

?>

quinta-feira, 18 de setembro de 2014

Estrutura Codeigniter - Parte01 (Model)

<?php

class usuario_model extends CI_Model{

private $table = null;
private $table_id = null;

public function __construct(){
$this->table = 'usuario';
$this->table_id = $this->table.'_id';
}

//selecionando os registros do bd pelos parâmetros passados
public function findAll($where=null, $order=null, $limit=null){
$this->db->select('*');
$this->db->from($this->table);
if(!is_null($where)){
$this->db->where($where);
}
if(!is_null($order)){
$this->db->order_by($order[0], $order[1]);
}
else{
$this->db->order_by($this->table_id, 'desc');
}
if(!is_null($limit)){
$this->db->limit($limit[0], $limit[1]);
}
$query = $this->db->get();
if($query->num_rows()>0){
return $query->result_array();
}
else{
return null;
}
}

//selecionando o registro pelo id
public function findById($id){
$this->db->select('*');
$this->db->from($this->table);
$this->db->where(array($this->table_id => $id));
$query = $this->db->get();
if($query->num_rows()>0){
$resultado = $query->result_array();
return $resultado[0];
}
else{
return null;
}
}

//selecionando o registro pela coluna
public function findBy($column, $value){
$this->db->select('*');
$this->db->from($this->table);
$this->db->where(array($column => $value));
$query = $this->db->get();
if($query->num_rows()>0){
$resultado = $query->result_array();
return $resultado[0];
}
else{
return null;
}
}

//realizando uma consulta com a query livre
public function find($qry){
$query = $this->db->query($qry);
if($query->num_rows()>0){
return $query->result_array();
}
else{
return null;
}
}

//contando a quantidade de registros da consulta
public function count($where){
$this->db->select('*');
$this->db->from($this->table);
if(!is_null($where)){
$this->db->where($where);
}
$query = $this->db->get();
return $query->num_rows();
}

//inserindo registros no bd
public function insert($data=array()){
$this->db->insert($this->table, $data);
   return $this->db->insert_id();
}

//alterando o registro no db
public function update($id, $data=array()){
$this->db->where($this->table_id, $id);
return $this->db->update($this->table, $data);
}

//excluindo o registro do bd
public function delete($id){
return $this->db->delete($this->table, array($this->table_id => $id));
}

//realizando um requisição livre
//se retornar algum registro retorna e forma de array
public function execute($qry){
$query = $this->db->query($qry);
if(is_object($query)){
if($query->num_rows()>0){
return $query->result_array();
}
else{
return null;
}
}
else{
return true;
}
}

}

?>

quarta-feira, 17 de setembro de 2014

Descompactar/extrair arquivo ZIP com Codeigniter

//link para download da classe Unzip criada por Phil Sturgeon
//https://github.com/philsturgeon/codeigniter-unzip
//colocar em: application/libraries/

//diretório em que o arquvivo .zip se encontra
$dir_arquivo_zip = 'uploads/tmp/';
//diretório para onde os arquivos serão movidos
$dir_fotos = 'uploads/imgs/';

//carregando a classe unzip
$this->load->library('unzip');
//definindo que só serão extraidos arquivos .jpg
$this->unzip->allow(array('jpg'));

//se a extração ocorrer corretamente
if($this->unzip->extract($dir_arquivo_zip.'pacote.zip')){


   //pegando todos os arquivos .jpg
   $arquivos = glob($path."*.jpg");

   //movendo os arquivos para outro diretorio
   foreach($arquivos as $foto){
         $arq = explode('/', $foto);
         copy($foto, $dir_fotos.'/'.strtolower($arq[2]));                  
   }


   $msg = 'Extração realizada com sucesso.' ;
   $data['msg'] = '<div id="sucesso">'.$msg.'</div>';
}
//se houver algum problema na extração
else{

     $msg = 'Não foi possível realizar a extração dos arquivos.' ;
     $data['msg'] = '<div id="erro">'.$msg.'</div>';

}

$this->load->view('extracao_zip_view', $data);

terça-feira, 16 de setembro de 2014

Upload de arquivos/imagens com Codeigniter

               $dir= 'uploads/fotos/';

                if(!file_exists($dir)){
                    mkdir($dir, 0777, true);
                }
                             
                $config = array(
                    // onde irá salvar a imagem
                    'upload_path' => $dir,
                    //extenções permitidas
                    'allowed_types' => 'gif|jpg|png',
                    //Tamanho máximo do arquivo, caso 5MB
                     'max_size' => '5000'
                );

                $this->load->library('upload', $config);
                $this->upload->initialize($config);

                if ($this->upload->do_upload('nome_do_input')) {
                    $arquivo = $this->upload->upload_path . DIRECTORY_SEPARATOR . $this->upload->file_name;                 
                     
                    $msg = 'Upload do arquivo '.$arquivo.' realizado com sucesso.';

                    $data['msg'] = '<div id="sucesso">'.$msg.'</div>';

                }
                else{

                    $msg =  $this->upload->display_errors();

                     $data['msg'] = '<div id="erro">'.$msg.'</div>';

                }

$this->load->view('upload_img_view', $data);

segunda-feira, 15 de setembro de 2014

Verificando se imagem/arquivo existe com CodeIgniter (file_exists)

//verificando se a imagem/arquivo existe no diretório
$imgFunc = "uploads/foto_funcionarios/".$funcionario->foto;
if(!file_exists($imgFunc)){
  $imgFunc = 'uploads/foto_default/funcionario_default.png';
}

//mostrando a imagem no HTML
<img id="img_func" name="img_func" src="<?php echo base_url($imgFunc); ?>" alt="<?php echo $funcionario->nome; ?>"/>

terça-feira, 9 de setembro de 2014

Ajax retornando Json com Codeigniter/JQuery

$("#cep").on("blur",function(){
                  
                var base_url = '<?php echo site_url(); ?>';
                var controller = 'cliente';
                var action = 'consultaCep';
                var cep = $(this).val();

                //requisicao ajax enviando os parâmetros via POST
                $.ajax({
                   'url' : base_url + controller + '/' + action,
                   'type' : 'POST',
                   'data' : {'cep' : cep},
                    'success' : function(data){
                       //recuperando o resultado via json
                        var dado = $.parseJSON(data);
                      //populando os valores                     
                        $("#endereco").val(dado.rua);
                        $("#bairro").val(dado.bairro);
                        $("#cidade").val(dado.cidade);
                        $("#estado").val(dado.estado);
                        $("#numero").focus();
                    }
                });

           });

Ajax com Codeigniter/JQuery

//parametros
var base_url = '<?php echo site_url(); ?>';
var controller = 'cliente';
var action = 'getCliente';
var cliente_id = $("#cliente_id").val();

//requisicao ajax enviando os parâmetros para o PRÓPRIO MÉTODO
$.ajax({
   'url' : base_url + '/' + controller + '/'+action+'/'+cliente_id,
    'success' : function(data){
       alert(data);
    }
});

//requisicao ajax enviando os parâmetros via POST
$.ajax({
   'url' : base_url + '/' + controller + '/'  + action,
   'type' : 'POST',
   'data' : {'id' : cliente_id, 'status': 1},
    'success' : function(data){
       alert(data);
       location.reload();
    }
});