Informática Numaboa - Tutoriais e Programação
Componente 1.5 MVC - Frontend
Dom 20 Jan 2008 23:37 |
- Detalhes
- Categoria: Joomla
- Atualização: Segunda, 02 Julho 2012 19:28
- Autor: vovó Vicki
- Acessos: 21011
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:
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
- 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().
- Anterior
- Próximo >>