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 UMA SOLICITAÇÃO VARIÁVEL NO TIPO DE MENU


Até agora a mensagem exibida é sempre Olá Mundo!. Joomla! 1.6 dá a possibilidade de adicionar parâmetros para tipos de menu. No nosso caso, isso é feito no arquivo site/views/helloworld/tmpl/default.xml:

<?xml version="1.0" encoding="utf-8"?>
<metadata>
  <layout title="COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE">
    <message>COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC</message>
  </layout>
  <fields name="request">
    <fieldset name="request">
      <field
        name="id"
        type="list"
        label="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL"
        description="COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC"
        default="1"
      >
        <option value="1">Hello World!</option>
        <option value="2">Good bye World!</option>
      </field>
    </fieldset>
  </fields>
</metadata>

Duas coisas importantes a serem observadas:

  • o grupo de solicitação de campos indica campos obrigatórios; e
  • a matriz de parâmetros que indica que esses parâmetros serão adicionados na URL de solicitação.

O modelo deve ser modificado, a fim de alternar entre as duas mensagens diferentes (que é escolhida pelo usuário com o campo definido acima):

<?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)) 
    {
      $id = JRequest::getInt('id');
      switch ($id) 
      {
      case 2:
        $this->msg = 'Good bye World!';
      break;
      default:
      case 1:
        $this->msg = 'Hello World!';
      break;
      }
    }
    return $this->msg;
  }
}

Modifique também o seu arquivo helloworld.xml para indicar a nova versão:

<?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.5</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>

Você pode testar esta solicitação variável inserindo index.php?option=com_helloworld&id=1 ou index.php?option=com_helloworld&id=2 na barra de endereços do seu navegador.


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 04                                   Componente MVC para Joomla 1.6 - Parte 06

{jcomments on}

Seja social. Compartilhe!