Avaliação do Usuário

Estrela ativaEstrela ativaEstrela ativaEstrela ativaEstrela ativa
 

NOTA DE PUBLICAÇÃO

Este tutorial é uma tradução, com adaptação livre, do original Developing a Model-View-Controller (MVC) Component for Joomla!1.6 tutorial, de Christophe Demko, publicado no site de documentação do Joomla, o docs.joomla.org.

A tradução e publicação no Mabesi.com foi autorizada pelo próprio autor, com o qual entramos em contato, sendo a única condição imposta a de seguir as regras para documentação eletrônica do Joomla!, cuja licença pode ser encontrada em http://docs.joomla.org/JEDL., e que obriga, principalmente, a inclusão da informação da própria licença de uso e distribuição do documento, além de citar o nome do autor da obra original, o que fazemos com muito prazer.

 

ADICIONANDO UMA VISÃO AO COMPONENTE


INTRODUÇÃO

 

No núcleo da estrutura do framework do Joomla! 1.6, os autores de componentes de terceiros dividem o seu código em três partes principais:

  • Modelos (Models): Eles gerenciam os dados;
  • Controladores (Controllers): Eles executam tarefas, definem e obtem os estados dos modelos e solicitam a exibição de visões;
  • Visões (Views): Elas exibem o conteúdo de acordo com o tipo (erro, a alimentação, html, json, raw, xml) e do layout escolhido pelos controladores

CONFIGURANDO O CONTROLADOR

 

No código do núcleo do Joomla, há uma classe capaz de gerenciar os controladores: JController. Essa classe deve ser estendida para ser usada em nosso componente.

No arquivo site/helloworld.php (ponto de entrada do nosso componente Hello World), coloque essas linhas:

 

<?php
// Sem acesso direto ao arquivo
defined('_JEXEC') or die('Restricted access');
 
// Importando a biblioteca do controlador do Joomla
jimport('joomla.application.component.controller');
 
// Obtendo uma instância do controlador que contém o prefixo HelloWorld
$controller = JController::getInstance('HelloWorld');
 
// Executando a requisição de tarefa
$controller->execute(JRequest::getCmd('task'));
 
// Redirecionar se estiver definido pelo controlador
$controller->redirect();

 

O método estático getInstance da classe JController irá criar um controlador. No código acima, ele irá criar um controlador chamado HelloWorldController usando o arquivo controller.php (isto é um comportamento padrão). Com o seu gerenciador de arquivos e editor favorito, crie o arquivo site/controller.php, contendo:

 

<?php
// Sem acesso direto ao arquivo
defined('_JEXEC') or die('Restricted access');
 
// Importar a bliblioteca do controlador do Joomla
jimport('joomla.application.component.controller');
 
/**
 * Hello World Component Controller
 */
class HelloWorldController extends JController
{
}

 

Quando nenhuma tarefa é enviada nos pedidos de requisição, a tarefa padrão será executada. A tarefa display (mostrar) é a tarefa padrão. A classe JController possui tal tarefa. No nosso exemplo, ela irá mostrar uma view (visão) chamada HelloWorld.

 

CONFIGURANDO A VISÃO

 

Com o seu gerenciador de arquivos e editor favorito, crie o arquivo site/views/helloworld/view.html.php, que será capaz de exibir a visão padrão, contendo:

 

<?php
// Sem acesso direto ao arquivo
defined('_JEXEC') or die('Restricted access');
 
// Importando a biblioteca de visão do Joomla
jimport('joomla.application.component.view');
 
/**
 * HTML View class for the HelloWorld Component
 */
class HelloWorldViewHelloWorld extends JView
{
        // Sobrescrevendo o método display de JView
        function display($tpl = null) 
        {
                // Atribuindo dados à visão
                $this->msg = 'Hello World';
 
                // Esibir a visão
                parent::display($tpl);
        }
}

 

O método display (mostrar) da classe Jview é chamado com a tarefa display da classe JController. No nosso caso, esse método irá exibir os dados usando o arquivo tmpl/default.php.

Com o seu gerenciador de arquivos e editor favorito, crie o arquivo site/views/helloworld/tmpl/default.php, que será responsável por mostrar a visão padrão, contendo:

 

<?php
// Sem acesso direto ao arquivo
defined('_JEXEC') or die('Restricted access');
?>
<h1><?php echo $this->msg; ?></h1>

 

Este arquivo de template (modelo) será incluído pela classe JView.

Portanto, aqui, $this se refere à classe HelloWorldViewHelloWorld.

 

EMPACOTANDO O COMPONENTE

 

Conteúdo do seu diretório de código:

  • helloworld.xml
  • site/index.html
  • site/helloworld.php
  • site/controller.php
  • site/views/index.html
  • site/views/helloworld/index.html
  • site/views/helloworld/view.html.php
  • site/views/helloworld/tmpl/index.html
  • site/views/helloworld/tmpl/default.php
  • admin/index.html
  • admin/helloworld.php
  • admin/sql/index.html
  • admin/sql/updates/index.html
  • admin/sql/updates/mysql/index.html
  • admin/sql/updates/mysql/0.0.1.sql

 

Crie um arquivo compactado deste diretório e instale -o usando o  gerenciador de extensões do Joomla! 1.6.

Você pode testar este componente básico, digitando nomedomeusite/index.php?option=com_helloworld na barra de endereço do navegador.

 

ARQUIVO DE MANIFESTO

 

Conteúdo do arquivo de manifesto helloworld.xml:

 

<?xml version="1.0" encoding="utf-8"?>
 <extension type="component" version="1.6.0" method="upgrade">

  <name>Hello World!</name>

  <!-- Os seguintes elementos são opcionais e sem restrição de formato -->
  <creationDate>March 2011</creationDate>
  <author>Plinio Mabesi</author>
  <authorEmail> plinio.mabesi (a) mabesi.com</authorEmail>
  <authorUrl> http://www.mabesi.com</authorUrl>

  <!-- Informações de Copyright apenas para exemplo!!! -->
  <copyright>Copyright © 2011 - Plinio Mabesi - All rights reserved</copyright>
  <license>Here you put any informations about license</license>

  <!-- O texto da versão fica registrado na tabela de componentes -->
  <version>0.0.2</version>

  <!-- A descrição é opcional e o padrão é o nome -->
  <description>Descrição do componente Hello World...</description>

  <update> <!-- Este trecho é executado em atualizações; Novo no Joomla! 1.6 -->
    <schemas>
      <schemapath type="mysql">sql/updates/mysql</schemapath>
    </schemas>
  </update>

    <!-- Seção de Cópia de Arquivos Principais do Site -->
    <!-- Perceba o atributo folder: Este atributo descreve a pasta de origem do
            pacote a partir da qual os arquivos são copiados para instalação,
            portanto os arquivos desta seção serão copiados da pasta /site/
            do pacote-->
    <files folder="site">
        <filename>index.html</filename>
        <filename>helloworld.php</filename>
        <filename>controller.php</filename>
        <folder>views</folder>
    </files>
 
    <administration>
        <!-- Seção Menu de Administração -->
        <menu>Hello World!</menu>
        <!-- Seção de Cópia de Arquivos Principais de Administração -->
        <!-- Perceba o atributo folder: Este atributo descreve a pasta de origem
            do pacote a partir da qual os arquivos são copiados para instalação,
            portanto os arquivos desta seção serão copiados da pasta /admin/
            do pacote -->
        <files folder="admin">
            <!-- Admin Main File Copy Section -->
            <filename>index.html</filename>
            <filename>helloworld.php</filename>
            <!-- SQL files section -->
            <folder>sql</folder>
        </files>
    </administration>
</extension>

 

Resultado: Você verá, por padrão, a mensagem contida na variável $this->msg no arquivo view.html.php.

 

Componente MVC para Joomla! 1.6 - Parte 01                 Componente MVC para Joomla! 1.6 - Parte 03

 

{jcomments on}

Seja social. Compartilhe!