Princípios Básicos de Como um Componente Funciona
From Joomla! Documentation
Este artigo é projetado para os iniciantes Joomla!; ele é projetado para explicar como é um componente Joomla!, e como ele funciona. Quando um exemplo de componente específico ajudar o tutorial, este artigo vai se referir a um componente de exemplo chamado de Hello World!.
O que é um Componente Joomlaǃ
A component is a kind of Joomla! extension. Components are the main functional units of Joomla!; they can be seen as mini-applications. An easy analogy would be that Joomla! is the operating system and the components are desktop applications. Created by a component, content is usually displayed in the center of the main content area of a template (depending on the template).
Most components have two main parts: an administrator part and a site part. The site part is what is used to render pages of your site when they are requested by your site visitors during normal site operation. The administrator part provides an interface to configure and manage different aspects of the component and is accessible through the Joomla! administrator application.
Joomla! comes with a number of core components, like the content management system, contact forms and Web Links.
See also: Module, Plugin, Template
No framework Joomla!, os componentes podem ser projetados usando um modelo plano (retorna o código HTML para a página solicitada) ou no padrão Model-View-Controller (aqui referido como MVC).
Introdução ao MVC
MVC é um padrão de design de software que pode ser usado para organizar o código de tal forma que a lógica de negócios e apresentação de dados estão separados. A premissa por trás dessa abordagem é que, se a lógica de negócios é agrupada em uma seção, então a interface e a interação do usuário que envolve os dados podem ser revisados e personalizados sem ter que reprogramar a lógica de negócios. O MVC foi originalmente desenvolvido para mapear a entrada tradicional, o processamento, os papéis de saída em uma arquitetura lógica de interface gráfica do usuário (GUI).
Modelo
The model is the part of the component that encapsulates the application's data. It will often provide routines to manage and manipulate this data in a meaningful way in addition to routines that retrieve the data from the model. In general, the underlying data access technique should be encapsulated in the model. In this way, if an application is to be moved from a system that utilizes a flat file to store its information to a system that uses a database, the model is the only element that needs to be changed, not the view or the controller.
Visão (View)
The view is the part of the component that is used to render the data from the model in a manner that is suitable for interaction. For a web-based application, the view would generally be an HTML page that is returned to the user. The view pulls data from the model (which is passed to it from the controller) and feeds the data into a template which is populated and presented to the user. The view does not cause the data to be modified in any way, it only displays the data received from the model.
Controlador (Controller)
The controller is responsible for responding to user actions. In the case of a web application, a user action is generally a page request. The controller will determine what request is being made by the user and respond appropriately by triggering the model to manipulate the data appropriately and passing the model into the view. The controller does not display the data in the model, it only triggers methods in the model which modify the data, and then pass the model into the view which displays the data.
Framework de Componentes Joomla! Explicado
Modelo (Model)
In the Joomla framework, models are responsible for managing the data. The first function that has to be written for a model is a get function. It returns data to the caller. For this example, the caller will be the HelloWorldViewHelloWorld view. By default, the model named HelloWorldModelHelloWorld residing in site/models/helloworld.php is the main model associated to this view. So let's have a quick look at the naming conventions with an example, since the naming convention are the actual magic that make everything work: The class HelloWorldViewHelloWorld resides in site/views/helloworld/view.html.php and will make use of the class HelloWorldModelHelloWorld in the file site/models/helloworld.php Let's just assume we want to use an imaginary view fluffy, you would have to have: The class HelloWorldViewFluffy which resides in site/views/fluffy/view.html.php. The view will make use of HelloWorldModelFluffy in the file site/models/fluffy.php. Note: the actual screen of the view: site/views/fluffy/tmpl/default.php is required as well to make this example work. Breaking any of these bold conventions will lead to errors or a blank page.
Acessando um Componente Joomlaǃ
Primeiro, nós precisamos acessar a plataforma Joomla!, a qual é sempre acessada através de um único ponto de entrada. Usando seu navegador preferido, navegue até a seguinte URL:
1 | acesso de usuário | <seusite>/joomla/index.php |
2 | acesso de administrador | <seusite>/joomla/administrator/index.php |
Exemplo Hello World!: localhost/joomla/index.php Você pode usar a URL do componente ou um Menu para navegar até o componente. Neste artigo, vamos discutir usando a URL.
1 | acesso de usuário | <seusite>/joomla/index.php?option=com_<nome_do_componente> |
2 | acesso de administrador | <seusite>/joomla/administrator/index.php?option=com_<nome_do_componente> |
Exemplo Hello World!: localhost/joomla/index.php?option=com_helloworld
Estrutura Básica de Diretórios MVC
Componentes são armazenados em um diretório da sua instalação Joomla!, especificamente em:
- htdocs/<diretorio_do_joomla>/components/com_<nome_do_componente>/ .
O componente Hello World! seria armazenado em htdocs/<diretorio_do_joomla>/components/com_helloworld/.
Um componente básico conterá os seguintes arquivos em seu diretório:
- Um arquivo html que é apenas um arquivo de segurança com uma cor de fundoː index.html
- Um arquivo php que representar o próprio controlador (Controller)ː controller.php
- Um arquivo php que carrega a classe controllerː <nome_do_componente>.php
- Um arquivo php que representa o próprio modelo (Model)ː models/<nome_do_componente>.php
- Outro arquivo html para controle de fundoː models/index.html
- Um arquivo php contendo a visão padrão (View)ː views/<nome_do_componente>/tmpl/default.php
- Um arquivo xml para adicionar um tipo de item de menuː views/<nome_do_componente>/tmpl/default.xml
- Outro arquivo html para controle de fundoː views/<nome_do_componente>/tmpl/index.html
- Outro arquivo html para controle de fundoː views/<nome_do_componente>/index.html
- Um arquivo php para exibir a visão (View)ː views/<nome_do_componente>/view.html.php
JEXEC
A linha a seguir é comumente encontrada no início dos arquivos PHP Joomla!:
<?php
defined('_JEXEC') or die('Restricted Access');
Isso habilita um ponto de entrada seguro na plataforma Joomla!. JEXEC contém uma explicação detalhada.
Tutorials on Designing a MVC Component
To learn how to design your own MVC Component, please complete the tutorial for your Joomla! version.