J3.x

Criando um simples módulo/Usando o Banco de Dados

From Joomla! Documentation

< J3.x:Creating a simple module
This page is a translated version of the page J3.x:Creating a simple module/Using the Database and the translation is 100% complete.
Other languages:
Bahasa Indonesia • ‎English • ‎Nederlands • ‎español • ‎français • ‎português • ‎português do Brasil • ‎русский • ‎中文(台灣)‎
Joomla! 
3.x
Tutorial
Criando um módulo simples

Esta é uma série de múltiplos artigos sobre a forma de criar um módulo para Joomla! Versão Joomla 3.x. Você pode navegar pelos artigos desta série, usando o menu de navegação

Comece com a Introdução, e navegue pelos artigos desta série usando o botão de navegação abaixo ou a caixa à direita (Artigos desta série).




Muitos módulos em Joomla! precisam usar um banco de dados. Vamos assumir nesse tutorial que você já sabe o básico para usar a classe JDatabase. Se você não conhece, por favor leia a documentação em Acessando o Banco de dados usando a classe JDatabase antes de continuar esse tutorial.

Criando uma tabela ao Instalar

Para criar uma tabela no banco de dados durante a instalação do módulo precisaremos adicionar as seguintes linhas em mod_helloworld.xml:

<install>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/install.mysql.utf8.sql</file>
         <file driver="sqlazure" charset="utf8">sql/sqlazure/install.sqlazure.utf8.sql</file>
     </sql>
</install>

<uninstall>
     <sql>
         <file driver="mysql" charset="utf8">sql/mysql/uninstall.mysql.utf8.sql</file>
         <file driver="sqlazure" charset="utf8">sql/sqlazure/uninstall.sqlazure.utf8.sql</file>
     </sql>
</uninstall>

<update> 
    <schemas>
        <schemapath type="mysql">sql/mysql/updates</schemapath> 
	<schemapath type="sqlazure">sql/sqlazure/updates</schemapath> 
    </schemas> 
</update>

Temos 3 seções no arquivo:

  • A tag install adiciona uma tabela ao banco de dados.
  • A tag uninstall remove a tabela do banco de dados se o módulo for desinstalado. Note que nem todos os módulos precisam dessa função (e ela não é obrigatória).
  • A tag update irá atualizar o banco de dados se uma atualização for necessária ao atualizar o módulo.

Em seguida você pode especificar a tag folder na seção files do arquivo helloworld.xml para garantir que os arquivos sql serão copiados do seu pacote zip para essas pastas:

<folder>sql</folder>

Note que nos temos esquemas para MySQL e Microsoft SQL - novamente você pode adaptar seu módulo para um ou ambos os sistemas.

Nesse exemplo nos iremos apenas mostrar um arquivo de exemplo para o banco de dados MySQL. Criar um servidor Microsoft SQL Server será um exercício para o leitor.

Em nosso arquivo install.mysql.utf8.sql nos iremos criar a tabela e inserir algumas saudações em línguas diferentes.

CREATE TABLE IF NOT EXISTS `#__helloworld` (
	`id` int(10) NOT NULL AUTO_INCREMENT,
	`hello` text NOT NULL,
	`lang` varchar(25) NOT NULL,

  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hello World', 'en-GB');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Hola Mundo', 'es-ES');
INSERT INTO `#__helloworld` (`hello`, `lang`) VALUES ('Bonjour tout le monde', 'fr-FR');

No arquivo de desinstalação, nos iremos simplesmente remover a tabela.

DROP TABLE IF EXISTS `#__helloworld`

Finalmente vamos deixar um local reservado para os arquivos de atualização. Lá será preciso colocar um arquivo SQL para cada versão de componente. Cada nome de arquivo deve corresponder a seqüência de versão no arquivo de manifesto para essa versão. O Joomla usa essa string para determinar quais arquivos SQL devem ser executados e em que ordem eles serão executados.

Nota importante: Esses arquivos também serão usados para definir o número da versão na tabela #__schemas. Esse número de versão deve estar presente na versão atual do componente para que os novos arquivos SQL sejam executados durante a atualização. Por exemplo, se você tiver a versão 1.0 e estiver atualizando para a versão 1.1, o arquivo 1.1.sql não será executado se não houver nenhum arquivo 1.0.sql na versão 1.0. Por esse motivo, é uma boa prática ter um arquivo de atualização SQL para cada versão, mesmo se não houver nenhuma alteração SQL nessa versão.

# Placeholder file for database changes for version 1.0.0

Fazendo a requisição no arquivo helper

Ao instalar o nosso módulo nos podemos encontrar no banco de dados uma tabela chamada helloworld com os registros de saudações inseridas. Nos podemos agora recuperar esses registros do banco de dados para exibi-los aos usuários. Nos iremos alterar a função getHello presente o arquivo helper.php.

Por agora nos iremos ignorar campos de formulário para escolher um dos hello´s e vamos apenas retornar as saudações em inglês.

// Obtain a database connection
$db = JFactory::getDbo();
// Retrieve the shout
$query = $db->getQuery(true)
            ->select($db->quoteName('hello'))
            ->from($db->quoteName('#__helloworld'))
            ->where('lang = ' . $db->Quote('en-GB'));
// Prepare the query
$db->setQuery($query);
// Load the row.
$result = $db->loadResult();
// Return the Hello
return $result;

Conclusão

Criar módulos que utilizam conexões com banco de dados no Joomla! é um processo bastante simples e direto. Usando as técnicas descritas neste tutorial, é possível desenvolver muitos módulos com pouco aborrecimento, de forma a permitir futuras atualizações com fácil gerenciamento.