A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Componente 1.5 MVC - Frontend

Dom

20

Jan

2008


23:37

(22 votos, média 5.00 de 5) 


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:

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 smile
  • 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().

Informações adicionais