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
(7 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á 103 visitantes e 1 usuário registrado online

3293 registros
0 hoje
12 nesta semana
29 neste mês

Boas vindas: meuso

Estatística

Artigos: 1063
Leituras: 6013450
Arquivados: 21
Downloads: 533
Baixados: 171427
Glossário: 1208
Bibliografia: 25
Links: 90

Visitas de onde

Top 5:
Brasil flag 73%Brasil (39615)
Portugal flag 4%Portugal (2436)
EUA flag 4%EUA (1930)
Holanda flag 0%Holanda (237)
Rússia flag 0%Rússia (232)
54589 visitas de 97 países

Hoje:532
Ontem:1993
No mês:28774
Mês passado:25815
Total:54589
Recorde:3037
No dia:04.03.10
Leituras hoje:12651
Leituras Total:236765
Bots hoje:204
Dados desde:16.02.2010

Login

Kanji da hora




Faça contato







Juro por Deus que estou morta de vergonha. Ao invés do nosso presidente ouvir os apelos e tentar ajudar, ele "tira sarro" de prisioneiros políticos perseguidos pelo seu lunático amigo Castro, apreciador do frango ensopado de dona Letícia.