Hífen nos controllers do codeigniter

Publicado 23/05/2010 em CodeIgniter, PHP.    

Recentemente o analista da agência onde trabalho (analista web que fique claro), me disse que o google vê diferença sim, entre hífens(-) e underlines (_), e que os primeiros são preferíveis.
Resumindo a opera, precisei mudar a forma como o codeigniter interpreta os controllers através da uri, pois como sabemos, não é possível usar hífen nos nomes dos controllers.
Entre todas as soluções que pesquisei, encontrei uma no fórum do codeigniter.com que achei bem simples e funcional, segue:
Dentro da pasta application/config abra o arquivos hooks.php e adicione a ele as seguintes linhas:

var $remove_acentos    =  TRUE;

$hook['pre_system'] = array(
'class' => '',
'function' => 'prettyurls',
'filename' => 'myhooks.php',
'filepath' => 'hooks',
'params' => array()
);

Em seguida dentro da pasta application/hooks, crie um arquivo com o nome informado no passo anterior, neste caso myhooks.php, com a função também informada no passo acima:

function prettyurls() {
if (is_array($_GET) && count($_GET) == 1 && trim(key($_GET), '/') != '') {
$newkey = str_replace('-','_',key($_GET));
$_GET[$newkey] = $_GET[key($_GET)];
unset($_GET[key($_GET)]);
}
if (isset($_SERVER['PATH_INFO'])) $_SERVER['PATH_INFO'] = str_replace('-','_',$_SERVER['PATH_INFO']);
if (isset($_SERVER['QUERY_STRING'])) $_SERVER['QUERY_STRING'] = str_replace('-','_',$_SERVER['QUERY_STRING']);
if (isset($_SERVER['ORIG_PATH_INFO'])) $_SERVER['ORIG_PATH_INFO'] = str_replace('-','_',$_SERVER['ORIG_PATH_INFO']);
if (isset($_SERVER['REQUEST_URI'])) $_SERVER['REQUEST_URI'] = str_replace('-','_',$_SERVER['REQUEST_URI']);

}

Agora basta habilitar os hooks no config.php e provavelmente tudo funcionará como o esperado:

$config['enable_hooks'] = TRUE;

Agora um controller que antes era chamado através da url “conheca_a_empresa”, por exemplo, poderá ser chamado através da uri “conheca-a-empresa”, sem que você tenha a necessidade de mexer na estrutura que você já tinha.
O mais legal desta solução é que você pode continuar chamando os controllers da maneira antiga, o que garante que sua aplicação continue funcionando sem nenhum tipo de problema.


Sem comentários.

Problema com acentos na classe upload do Codeigniter

Publicado 09/11/2009 em CodeIgniter, PHP.    

Tentarei explicar de forma simples como resolver o problema que encontramos quando fazemos upload de arquivos com acentos usando a classe upload do codeigniter.

Não vou entrar em detalhes do funcionamento do framework neste post, desta forma  suponho que o leitor saiba que existem duas pastas libraries, uma dentro da pasta application e outra na pasta system. Na librarie da pasta application geralmente temos as livrarias da nossa aplicação e também as livrarias extendidas da pasta librarie que fica dentro da pasta system, ufa.

Muitos aconselhariam fazer uma livraria extendida da classe Upload para não alterar a classe Upload do core. Eu particularmente preferi alterar direto no core já que retirar acentos de arquivos é  sempre necessário e deveria vir por padrão no Codeigniter.

Vamos a prática:

- Abra o arquivo Upload .php localizado na pasta libraries dentro da pasta system.

- Logo no inicio, abaixo de  “class CI_Upload {”  existem varias variáveis. Crie abaixo destas variáveis uma nova, exemplo:

var $remove_acentos    =  TRUE;

o valor deve ser TRUE, indicando que esta função deve ser executada por default, ou seja por padrão toda vez que a classe for usada.

- O próximo passo é criar a função anterior. Esta função pode ser feita de diversas formas, escolhi a que julgo melhor:

if ($this->remove_acentos == TRUE)
{
$str = array('/[ÂÀÁÄÃ]/' => 'A',
'/[âãàáä]/' => 'a',
'/[ÊÈÉË]/' => 'E',
'/[´`^~]/' => '_',
'/[êèéë]/' => 'e',
'/[ÎÍÌÏ]/' => 'I',
'/[îíìï]/' => 'i',
'/[ÔÕÒÓÖ]/' => 'O',
'/[ôõòóö]/' => 'o',
'/[ÛÙÚÜ]/' => 'U',
'/[ûúùü]/' => 'u',
'/ç/' => 'c',
'/Ç/' => 'C',
'/ñ/' => 'n',
'/Ñ/' => 'ñ'
);

$this->file_name = preg_replace(array_keys($str), array_values($str),$this->file_name);
}

- Caso você ainda encontre problemas, pode ser por causa da codificação que esta usando, neste caso acrescente no final da função a função utf8_decode() do php , ficando assim:

$this->file_name = preg_replace(array_keys($str), array_values($str), utf8_decode($this->file_name));

Este método funciona 100% e com isso os arquivos que forem enviados por upload no codeigniter não causarão mais erros.
Qualquer duvida os comments estão ai :D


Sem comentários.

Primeira impressão do windows seven

Publicado 04/11/2009 em Sistemas operacionais.    

Instalei neste último fim de semana a versão ultimate do windows seven, ou windows 7 como preferirem.

A primeira vista gostei bastante, o visual é semelhante ao do windows vista, porém aparentemente muito mais rápido. Claro que o visual não é a coisa mais importante, pelo menos para mim. Sempre acabo deixando com o visual clássico do windows.

O único problema que encontrei (por enquanto) foi para encontrar o driver para rede wireless.  No meu caso o windows seven não encontrou automaticamente o driver RTL8187. Se este for o seu caso encontrei uma solução neste site.

Espero não me decepcionar com o windows seven como me decepcionei com o vista.

Agora tenho que copiar meus arquivos antigos e instalar novamente todos os programas.


Sem comentários.

Sobre

Kynho, 24 anos, apaixonado por web desde 2002. Atualmente freelancer e desenvolvedor web de uma agência de publicidade agência de TI em São Paulo.



Categorias