Criando componentes
Postado por Carlitos | Tags cakebook , cakephp , componentes , components | Postado em 12:03
0
Bom dia povo! Ontem eu vi que havia um trecho de código que sempre se repetia ao longo de alguns controllers de um sistema em Cake que estou desenvolvendo e resolvi criar um componente com esta funcionalidade e aproveitar o reuso de código de forma limpa né ;)
Bom, vamos lá... mãos a obra!
O código é simples, trata-se de uma função que retorna o nome do navegador (browser) que o usuário está utilizando e qual a versão dele. Mas pra que usar isto, mano? Bom, é muito útil quando há alguma parte do seu site/sistema que "não funciona" em determinado navegador. Por exemplo, no meu caso existe uns getgads (firulas) na parte de validação de formulário que "não funciona" no IE 6 ou inferior.
Os componentes devem ficar dentro da pasta "./app/controllers/components/". O nome do meu componente é "Navegador", então criei o arquivo "./app/controllers/components/navegador.php", com o código
<?php class NavegadorComponent extends Object { } ?>
Depois adicionei a função que retorna as informações sobre o navegador
<?php class NavegadorComponent extends Object { // Função que retorna o Brownser que está sendo usado function getBrowser(){ $var = $_SERVER['HTTP_USER_AGENT']; $info['browser'] = "OTHER"; // valid brosers array $browser = array ("MSIE", "OPERA", "FIREFOX", "MOZILLA", "NETSCAPE", "SAFARI", "LYNX", "KONQUEROR"); // bots = ignore $bots = array('GOOGLEBOT', 'MSNBOT', 'SLURP'); foreach ($bots as $bot) // if bot, returns OTHER if (strpos(strtoupper($var), $bot) !== FALSE) return $info; // loop the valid browsers foreach ($browser as $parent){ $s = strpos(strtoupper($var), $parent); $f = $s + strlen($parent); $version = substr($var, $f, 5); $version = preg_replace('/[^0-9,.]/','',$version); if (strpos(strtoupper($var), $parent) !== FALSE){ $info['browser'] = $parent; $info['version'] = $version; return $info; } } return $info; } } ?>
Agora para poder ter acesso a esta nova funcionalidade você deverá adicionar o componente "Navegador" ao seu controller. Mas como? Veja exemplo abaixo
<?php class TestesController extends AppController{ $components = array('Navegador'); // Adiciono o componente "Navegador" ao controller Testes function add(){ /* guardo na variável 'browser' o array retornado pela função getBrowser do * meu componente Navegador com os dados do navegador do usuário * como usei o $this->set, esta informação estará disponível para a view add * através da variável $browser, que é um array. */ $this->set('browser', $this->Navegador->getBrowser()); } } ?>
Simples não? Espero que tenham entendido e que seja útil!
Consultem também a documentação oficial do CakePHP sobre o uso e criação de componentes aqui!
Abração,
Comentários postados (0)
Postar um comentário