Aldeia Numaboa

  • Increase font size
  • Default font size
  • Decrease font size
Home Informática Tutoriais e Programação Joomla Componente 1.5 MVC - Frontend II

Componente 1.5 MVC - Frontend II

Indique esta página Imprimir PDF
(8 votos, média 5.0 de 5)

No tutorial anterior vimos o essencial de um componente Joomla 1.5 MVC. Criamos o controlador e a vista (VC), mas ficou faltando o modelo (M). Neste tutorial vamos completar a tarefa.

Se você ainda se lembra dos scripts do tutorial "Componente 1.5 MVC - Frontend" então sabe que o Olá foi colocado no código da vista. Isto não está dentro dos padrões MVC porque a vista foi projetada apenas para MOSTRAR os dados, não para contê-los.

Agora será explicado como remover os dados da vista (aliás, era um dado só, a string "Olá pessoal!") e colocá-los no modelo.

Criando o modelo

O conceito de modelo recebe este nome porque esta classe deve representar (ou ser o 'modelo') de alguma entidade. No nosso caso, o primeiro modelo representará um 'olá' ou saudação.

A convenção de nomes para modelos no framework do Joomla é parecida com a para os nomes de vistas: o nome da classe deve começar com o nome dado ao controlador (geralmente o nome do componente), seguido por Model e pelo nome do modelo. Dando seqüência ao que já fizemos até agora, o nome da classe será OlaModelOla.

A nova estrutura de diretórios ficará assim:

components |
           |- com_ola |
                      |- ola.php
                      |- controlador.php
                      |- index.html
                      |- models |
                                | - ola.php
                                | - index.html
                      |- views |
                               |- index.html
                               | ola |
                                     | view.html.php
                                     |- index.html
                                     | tmpl |
                                            |- default.php
                                            |- index.html

Observe que, além do diretório models com seu arquivo ola.php, em cada um dos diretórios foi adicionado um arquivo index.html. Esta é uma boa prática para evitar que algum "abelhudo" liste seus diretórios. Você pode colocar qualquer coisa nestes arquivos, eu prefiro um arquivo vazio que mostra uma página em branco quando houver tentativas de acessar diretamente os diretórios.

Voltando à vaca fria...

Neste ponto, vamos apenas modelar um comportamento do nosso olá: obter a saudação. Para isto precisamos de apenas um método, chamado pegaOla( ). Este método não faz nada além de devolver a string "Olá pessoal!".

Aqui está o código do modelo ola.php:

<?php
/**
 * @package    Joomla.Tutoriais
 * @subpackage Componentes
 * components/com_ola/models/ola.php
 * @link       http://www.numaboa.com/
 * @license    Creative Commons by-nc-sa
*/
 
// evitar acesso direto
defined( '_JEXEC' ) or die( 'Acesso restrito' ); 
 
jimport( 'joomla.application.component.model' );
 
/**
 * Modelo Ola
 */
class OlaModelOla extends JModel
{
    /**
    * Pega a saudação
    * @return string A saudação que deve ser mostrada ao usuário
    */
    function pegaOla()
    {
        return 'Olá pessoal!';
    }
}
?>

Não vou mais repetir que a primeira linha é escrita por uma questão de segurança para evitar o acesso direto ao arquivo. A esta altura do campeonato todo mundo já está careca de saber, portanto, a partir deste ponto, a primeira linha linha do código será a segunda sorriso

Para começar, precisamos importar a classe JModel do framework para que possamos usá-la e ampliá-la. Então, dá-lhe o tradicional jimport.

Logo a seguir criamos a classe OlaModelOla ampliando JModel. Nela colocamos a função pegaOla( ), e isto é tudo.

Usando o modelo

O framework do Joomla foi projetado para fazer com que o controlador carregue o modelo que tiver o mesmo nome que a vista e o coloque dentro desta vista automaticamente. Como nossa vista se chama 'Ola', nosso modelo 'Ola' será carregado e colocado dentro da vista. Deste modo fica fácil obter uma referência do modelo usando o método JView::getModel( ).

O código original da vista tinha a linha

$falaOla = "Olá pessoal!";

Para acionar o modelo, esta linha precisa ser substituída por

$modelo =& $this->getModel();
$falaOla = $modelo->pegaOla();

Testando o novo componente

Como fizemos as alterações diretamente e ainda não instalamos o novo componente, a mancada continua sendo chamar o componente para teste com http://www.seusite.com.br/index.php?option=com_ola&view=ola. O resultado é o mesmo que obtivemos com o código anterior, só que agora podemos dizer que temos um componente MVC autêntico.

Finalmentes

Você acaba de ser promovido de diplomado em VC para doutor em MVC comemora

Parabéns!

Índice da série de tutoriais Componente 1.5 MVC

  1. Componente 1.5 - Padrão MVCComponente 1.5 - Padrão MVC
  2. Componente 1.5 MVC - Frontend
  3. Componente 1.5 MVC - Frontend II
  4. Componente 1.5 MVC - A tabela
  5. Componente 1.5 MVC - Interface Admin
  6. Componente 1.5 MVC - Funcionalidade admin
  7. Componente 1.5 MVC - Funcionalidade admin II

Referência

Hello World MVC 2 Component - The model

Atualização Ter, 21.04.2009 21:27  

Na Aldeia

Há 114 visitantes online

3630 registros
0 hoje
14 nesta semana
4 neste mês

Boas vindas: flor

Estatística

Membros: 3639
Artigos: 1045
Links: 90
Leituras: 6680770

Login

Kanji da hora




Faça contato







Perguntar não ofende: Será que propaganda eleitoral antecipada também está prevista na Ficha Limpa? Note que não estou sendo tendenciosa, porque da propaganda antecipada só se salva a Marina... por enquanto.