Aldeia Numaboa

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

Componente 1.5 MVC - Frontend

Indique esta página Imprimir PDF
(19 votos, média 5.0 de 5)
Índice do Artigo
Componente 1.5 MVC - Frontend
Controlador
Template
Todas as páginas

Neste tutorial vamos criar nosso "novo" componente "Olá Pessoal" com seu ponto de entrada e, no melhor estilo MVC, seu modelo, vista e controlador.

O componente no frontend

No padrão MVC, o mínimo que o frontend (Aplicação do Site) precisa é de um controlador e de uma vista além de, obviamente, um ponto de entrada. Estes elementos precisam estar em diretórios específicos para que o componente funcione.

Os arquivos necessários são: ola.php (o ponto de entrada), controlador.php (o controlador), view.html.php (a vista) e default.php (o template da vista). Estes scripts ficam nos seguintes diretórios:

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

O nome dos diretórios views e tmpl não podem ser mudados. O diretório views precisa obrigatoriamente ter um subdiretório com o nome da vista, que no nosso caso será também ola.

Criando o ponto de entrada

O Joomla sempre é acessado através de um único ponto de entrada: index.php para a Aplicação do Site ou administrator/index.php para a Aplicação de Administração. A Aplicação vai carregar o componente solicitado baseada no valor de 'option' na URL e o componente vai realizar a tarefa 'view'. Para o nosso componente a URL é:

index.php?option=com_ola&view=ola

Se o diretório da nossa vista fosse abc ao invés de ola, a URL seria index.php?option=com_ola&view=abc.

Isto vai carregar nosso arquivo principal, que pode ser visto como o único ponto de entrada do nosso componente: components/com_ola/ola.php.

O código dos arquivos de entrada são muito parecidos, seja qual for o componente. O código do arquivo ola.php é o seguinte:

<?php
/**
 * @package    Joomla.Tutoriais
 * @subpackage Componentes
 * components/com_ola/ola.php
 * @link       http://www.numaboa.com/
 * @license    Creative Commons by-nc-sa
*/
 
// evitar acesso direto
defined( '_JEXEC' ) or die( 'Acesso restrito' );
 
// Solicitar o controlador base
require_once( JPATH_COMPONENT.DS.'controlador.php' );
 
// Criar o controlador
$nomeclasse  = 'OlaController';
$controlador = new $nomeclasse;
 
// Obter a solicitação da tarefa
$controlador->execute( JRequest::getVar( 'task' ) );
 
// O controlador redireciona conforme a tarefa
$controlador->redirect();
 
?>

Seguem as explicações do código deste primeiro script:

  • Como sempre, como medida de segurança, a primeira linha do código é para evitar acesso direto ao script. Isto evita que uma chamada http://www.seusite.com.br/components/com_ola/ola.php execute o script. A coisa só funciona com uma chamada como a mostrada acima.
  • JPATH_COMPONENT é o caminho (path) absoluto para o componente em questão - no nosso caso, components/com_ola. Se você precisar especificamente do componente do Site ou do componente da Administração, você pode usar JPATH_COMPONENT_SITE ou JPATH_COMPONENT_ADMINISTRATOR.
  • DS é um separador de diretório do sistema: pode ser '/' ou '\'. Isto é definido automaticamente pelo framework para que o programador não precise se preocupar com exigências de diferentes sistemas operacionais.
  • Quando incluímos o controlador básico, na verdade incluímos uma classe. Uma classe nada mais é do que um modelo para que se possa criar um objeto. Como sabemos que vamos precisar do objeto controlador, este será nosso próximo passo.
  • Decidimos que o nome da nossa classe controlador será OlaController. Este é um padrão de nome: um nome qualquer seguido por 'Controller'. Pode ser xyzController, 123Controller e até OlaController que, vamos e venhamos, é melhor porque identifica o componente sorriso
  • Mais uma coisa sobre os nomes. O sistema não se importa com letras maiúsculas ou minúsculas, mas tome cuidado com espaços e letras acentuadas. Evite-as para não ter dor de cabeça.
  • Escolhido o nome do controlador, este é atribuído a uma variável. Neste exemplo, $nomeclasse = 'OlaController'.
  • A seguir, criamos o objeto controlador e o atribuímos a $controlador com $controlador = new $nomeclasse. Aí surge uma pergunta: porque não criar o objeto usando diretamente o nome que escolhemos? Porque $controlador = 'OlaController' não é aceito pelo sistema - o nome precisa ser comunicado através de uma variável.
  • Como já dispomos de um objeto controlador, podemos botá-lo para trabalhar. Vamos usar um dos seus métodos para chamar uma função de um outro objeto, o JRequest. Isto é feito com $controlador->execute( ).
  • JRequest::getVar( ) encontra uma variável numa URL. Se nossa URL for index.php?option=com_ola&view=ola, então esta função devolve a tarefa (task) 'view' cujo valor é 'ola'. O controlador guarda esta tarefa e está pronto para continuar.
  • Agora é só pedir para o controlador que redirecione nosso código de acordo com a tarefa solicitada: $controlador->redirect().


Atualização Qui, 18.06.2009 11:38  

Na Aldeia

Há 108 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: 6681067

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.

Leia Mais