Avaliação do Usuário

Estrela inativaEstrela inativaEstrela inativaEstrela inativaEstrela inativa
 

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 UM MODELO

No framework do Joomla!1.6, os modelos (models) são responsáveis por gerenciar os dados. A primeira função que deve ser escrita para um modelo é uma função get. Ela retorna os dados para o chamador. Em nosso caso, o chamador será a visão (view) HelloWorldViewHelloWorld. Por padrão, o modelo chamado HelloWorldModelHelloWorld é o modelo principal associado a esta visão.

Com seu editor e gerenciador de arquivos favorito crie o arquivo site/models/helloworld.php contendo:

<?php
// No direct access to this file
// Sem acesso direto ao arquivo
defined('_JEXEC') or die('Restricted access');
// import Joomla modelitem library
// importando a biblioteca modelitem do Joomla
jimport('joomla.application.component.modelitem');
/**
 * HelloWorld Model
 */
class HelloWorldModelHelloWorld extends JModelItem
{
        /**
         * @var string msg
         */
        protected $msg;
 
        /**
         * Get the message
         * @return string The message to be displayed to the user
         */
        public function getMsg() 
        {
                if (!isset($this->msg)) 
                {
                        $this->msg = 'Hello World!';
                }
                return $this->msg;
        }
}

A classe HelloWorldViewHelloWorld solicita os dados para o modelo usando o método get da classe JView:

<?php
// No direct access to this file
// Sem acesso direto ao arquivo
defined('_JEXEC') or die('Restricted access');
// import Joomla view library
// importando a biblioteca de view do Joomla
jimport('joomla.application.component.view');
/**
 * HTML View class for the HelloWorld Component
 * Classe de visão HTML para o componente HelloWorld
 */
class HelloWorldViewHelloWorld extends JView
{
        // Sobrecarregando o método display da classe JView
        function display($tpl = null) 
        {
                // Atribuindo dados para a visão (view)
                $this->msg = $this->get('Msg');
 
                // Verificando erros.
                if (count($errors = $this->get('Errors'))) 
                {
                        JError::raiseError(500, implode('<br />', $errors));
                        return false;
                }
                // Exibindo a visão (view)
                parent::display($tpl);
        }
}

Agora modifique o arquivo helloworld.xml para indicar o uso de modelos e a nova versão:

<extension type="component" version="1.6.0" method="upgrade">
<?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.4</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>>
        <folder>models</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">
            <filename>index.html</filename>
            <filename>helloworld.php</filename>
            <!-- Seção de arquivos SQL -->
            <folder>sql</folder>
        </files>
    </administration>
</extension>

EMPACOTANDO O COMPONENTE

Este deve ser o conteúdo atual 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.xml
  •     site/views/helloworld/tmpl/default.php
  •     site/models/index.html
  •     site/models/helloworld.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 do conteúdo deste diretório e instale -o usando o  gerenciador de extensões do Joomla! 1.6.

Você pode adicionar um item de menu deste componente usando o gerenciador de menus no back-end.

Componente MVC para Joomla 1.6 - Parte 03                 Componente MVC para Joomla 1.6 - Parte 05

{jcomments on}

Seja social. Compartilhe!