Olá a todos(as),
Com base em estudos de como construir um componente para CMS Joomla segue este registro de estudo dos métodos e objetos do Framework Joomla! para desenvolvimento de aplicativos componentes.
Segue aqui para ficar registrado o método de como estabelecer conexao com base de dados externa à session e contexto de um componente Joomla! 1.5.25:
/*
1- //Acessando uma base de dados Externa dentro do joomla!
2- $opcoes = array();
3- $opcoes['host'] = 'localhost';
4- $opcoes['user'] = 'root'; //usuario mysql
5- $opcoes['password'] = 'SENHA'; //senha do mysql
6- $opcoes['database'] = 'riovagas02'; //Nome do banco
7- $opcoes['prefix'] = ''; //PREFIXO DA TABELA, SE TIVER
8- $opcoes['driver'] = 'mysql';
9- //==========================================================
10- $db = "";
11- $db =& JDatabase::getInstance( $opcoes );
12- //Tratando os Erros -------------------------------------------------------------
13- if ( JError::isError($db) ) {
14- jexit('Database Error: ' . $db->toString() );
15- }
16- if ($db->getErrorNum() > 0) {
17- JError::raiseError(500 ,'JDatabase::getInstance: Falha na conexao
'
18- . 'joomla.library:'.$db->getErrorNum().' - '.$db->getErrorMsg() );
19- }
*/
Agora basta executarmos uma consulta de exemplo para vermos o resultado de nossa conexão:
/*
20- $sqlUser = "SELECT `id_Trabalhador` , `nome` , `status` , `nivel_user`, email_corporativo AS email FROM #__recrutador WHERE email_corporativo = '".$usuario->email."' ORDER BY id_TrabalhadorASC";
21- $db->setQuery( $sqlUser );
22- $parents = $db->loadObjectList();
23- foreach ( $parents as $row ) {
24- $UsuarioNome = $row->email;
25- $idTrabalhador = $row->id_Trabalhador;
26- $nivelDoUsuario = $row->nivel_user;
27- $userStatus = $row->status;
28- }
*/
Observe acima que foi montado uma matriz (linhas de 1 a 10) com os dados de sua conexão com a base de dados do Mysql. Observa-se também que a conexão é estabelecida pelo objeto "JDatabase" que possui o método herdado (::) de nome "getInstance" que retorna uma referência ao objeto de banco de dados global (linha 11). Após isso vemos o tratamento de erros de conexão (linhas 12 a 19).
Na linha 20 digitamos o nosso SQL pretendido e através do método "setQuery()" realizamos a execução da consulta SQL, observe que destaquei em vermelho este parâmetro (#__) que é tratado internamente pelo Joomla! para subustitui pelo prefixo da tabela, se houver, caso contrário não precisa colocá-lo.
Para retonarmos na tela com os dados de nossa consulta usaremos o método "loadObjectList()" carregando uma lista de objetos de banco de dados, que ao combinarmos com a função PHP nativa de varredura "foreach" iremos trazer os campos de nosso interesse da tabela em banco.
Esse recurso interno do Framework do Joomla! é sem dúvida uma mão na roda para casos em que estamos desenvolvendo aplicações que consultam bases de dados externas ao nosso CMS.
Espero que ajude alguém de alguma forma, fico a disposição para sugestões e criticas construtivas.
Um abraço a todos(as).
17/05/2012
Conexao com base externa dentro de Componente Joomla! 1.5.25
Assinar:
Postar comentários (Atom)
2 comentários:
Seria essa mesma lógica se fizesse um script em php para executar essa mesma função?
A vantagem de usar o objeto de conexão JDatabase nativo do framework interno do Joomla! seria uma melhor prática do que fazer uma conexão sem usar os métodos do Joomla! Mas o programador tem liberdade para fazer tal procedimento, embora não seja nada recomendado.
Postar um comentário
Todos os comentários serão moderados e postados um tempo depois, comentários ofencivos serão deletados.