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
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
Parabéns!
Índice da série de tutoriais Componente 1.5 MVC
- Componente 1.5 - Padrão MVCComponente 1.5 - Padrão MVC
- Componente 1.5 MVC - Frontend
- Componente 1.5 MVC - Frontend II
- Componente 1.5 MVC - A tabela
- Componente 1.5 MVC - Interface Admin
- Componente 1.5 MVC - Funcionalidade admin
- Componente 1.5 MVC - Funcionalidade admin II
Referência
Hello World MVC 2 Component - The model






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