Seguindo o Post de Desenvolvimento de Aplicações Joomla, vamos ao primeiro arquivo que o Joomla executa ao chamar um componente, mas antes criaremos o local que nosso componente deverá obrigatóriamente se localizar.
Dentro de components, na pasta da sua aplicação crie uma pasta para o seu componente. Neste caso colocarei uma pasta com_calculadora pois desenvolverei um componente calculadora.
Então
Aplicacao/components/com_calculadora.
Atenção, é obrigatório que a pasta do seu componente tenha o prefixo com_, pois o joomla utiliza estes caracteres como controlador para chamada do componente.
Então dentro desta pasta incluíremos o arquivo calculadora.php que é o primeiro arquivo chamado pelo Joomla ao chamarmos um componente pela url, por exemplo:
http://aplicacao/index.php?option=com_calculadora
Este primeiro arquivo é também chamado de Entry Point ou ponto de entrada, nome bem sugestivo na minha opinião.
Mais uma vez é impressindível que o nome deste arquivo seja calculadora.php, ou melhor, o nome do seu componente sem o com_.
Ou seja o nome da pasta que o abriga sem o com_.
Então este arquivo deve ser salvo em:
Aplicacao/components/com_calculadora/calculadora.php
Caso você não siga este padrão encontrará um Erro ao chamar seu componente.
Experimente dentro deste arquivo (calculadora.php) apenas digitar:
<?php
echo “Calculadora Teste”;
?>
E então rodar seu componente com:
http://aplicacao/index.php?option=com_calculadora
Se tudo estiver correto, você poderá ter “Calculadora Teste” dentro do container principal do seu site.
Como eu disse acima a primeira coisa que o Joomla faz ao carregar um componente, é chamar o Entry Point e este é responsável por carregar o nosso Controle (Control) e faze-lo chamar uma tarefa (task).
Na maioria dos componentes o código da Entry Point é padrão.
Vamos ao código com comentários
<?php
Esta primeira linha, impede acesso direto ao seu componente, ou seja, caso alguém tente rodar seu componente pelo navegador mais ou menos assim aplicacao/components/com_calculadora/calculadora.php, o Joomla não permitirá a execução do código.
defined( ‘_JEXEC’ ) or die( ‘Restricted access’ );
A linha abaixo carregará o nosso Controlador (ainda não o criamos). O papel do controlador eu já falei no primeiro post.
Apenas para informação, as constantes JPATH_COMPONENT.DS apenas guardam o caminho físico do seu componente, experimente fazer um echo JPATH_COMPONENT; e echo DS;
O JPATH guarda o endereço e o DS guarda o tipo da barra, que varia de sistema operacional.
Sobre o nome do arquivo de controle, calculadoraController.php, saiba que não é obrigatório que ele tenha este nome, em geral ele se chama apenas controller.php porém, a classe contida nele deve se chamar obrigatóriamente o nome do seu componente concatenado com Controller, logo por medidar de simplicidade, manteremos o arquivo e a classe com calculadoraController
require_once( JPATH_COMPONENT.DS.’calculadoraController.php’ );
A linha abaixo apenas cria o componente Controlador.
$controller = new CalculadoraController();
Esta linha lê da URL (parâmetro task), qual tarefa executar neste momento.
Caso não haja parâmetro task, como em: http://sistema/index.php?option=com_calculadora. A tarefa padrão de todo controlador, Display, será executada
Quando chegarmos ao controlador falarei mais do Display.
$controller->execute( JRequest::getVar( ‘task’ ) );
Esta ultima linha apenas redireciona à uma URL configurada pelo programador através da linha “$controller->setRedirect( $url );“. Caso você não especifique uma URL este metodo apenas retornará false e nada fará.
$controller->redirect();
?>
Bom, neste post cobri um pouco da Entry Point.
Nos próximos falo mais, até mais.
Tags: aplicações, componente, desenvolvimento, entry, Joomla, point
junho 3, 2009 às 22:43
[...] de Aplicações no Joomla – III By lmmoreira Nos post anterior, falamos sobre o Entry Point de um componente no Joomla, agora vamos falar sobre o Controlador em [...]
fevereiro 2, 2012 às 9:27
Muito bacana, pena que por enquanto só há isso.
abril 23, 2012 às 12:55
estou tendo erro ao chamar require_once( JPATH_COMPONENT.DS.’calculadoraController.php’ ); dentro da calculadora