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

Criando o controlador

Nosso componente, por enquanto, tem apenas uma função - colocar "Olá pessoal!" na tela. Para fazer apenas isto, vai precisar de um controlador muito simples. Como ainda não é necessário manipular dados, o controlador só precisa carregar a vista apropriada. Por este motivo, precisamos apenas do método display( ) e, como tudo o que precisamos já está na classe JController, a única coisa a ser feita é chamar o método JController::display( ).

Aqui está o código do controlador.php:

Depois do código de segurança testando _JEXEC, a primeira coisa a fazer é importar um arquivo do framework que é necessário para nosso componente. O arquivo em questão é libraries/joomla/application/component/controller.php que é incluído no nosso script através da função jimport. Os pontos '.' no parâmetro são usados como separadores de diretórios. Este arquivo contém todas as definições da classe JController, o que é necessário para poder estender esta classe.

O construtor JController sempre registra uma tarefa display( ) e, se não for especificado de outra forma (usando o método registerDefaultTask( ) do JController), esta tarefa é a default. Por este motivo, a função display( ), que apenas chama a mesma função da classe mãe, nem precisaria estar no nosso controlador... é chover no molhado. Mesmo assim, vamos deixá-la aí para mostrar o que o nosso controlador está fazendo.

O método JController::display( ) determina o nome da vista e do layout através da solicitação feita. Com esta informação ele carrega a vista apropriada e esta é arrumada de acordo com o que for especificado no layout. No nosso componente temos apenas uma vista chamada ola e apenas um layout, o default.

Criando a vista

A tarefa da vista também é muito simples: ela busca os dados que devem ser apresentados e os coloca no template usando o método JView::assignRef( ).

O código da vista view.html.php é:

assignRef( 'saudacao', $falaOla ); parent::display($tpl); } } ?>

Primeira providência: importar a classe JView para que possamos estendê-la.

Aqui novamente a convenção de nome da classe: nome do controlador (Ola) + tarefa (View) + nome (diretório) da vista (Ola) ou seja, nossa classe precisa chamar-se OlaViewOla (não existe diferença entre maiúsculas e minúsculas, mas não use espaços ou letras acentuadas!).

Nossa classe estende a classe JView com uma função display( ). Esta função pode receber um parâmetro, o $tpl. Se for chamada sem o parâmetro, $tpl será null e, se $tpl=null, o template default.php será utilizado.

Nesta função criamos a variável $falaOla e lhe atribuímos o valor 'Olá pessoal!'. A seguir, colocamos no OlaViewOla (que nada mais é do que o JView ampliado) a referência 'saudacao' cujo valor deve ser o mesmo da variável $falaOla com $this->assignRef( 'saudacao', $falaOla ). Esta referência é uma nova propriedade da classe.

Tudo pronto! Agora chamamos a classe mãe para jogar o template na tela com parent::display($tpl).


Criando o template

Templates (ou layouts) do Joomla são arquivos PHP usados para apresentar dados da vista numa determinada forma. As variáveis atribuídas através do método JView::assignRef podem ser acessadas pelo template através de $this->NomeDaPropriedade.

Nosso template default.php tem o seguinte código:

saudacao; ?>

Observe que código PHP acaba logo depois do código para evitar o acesso direto. Depois disto, é HTML puro.

Pondo a coisa para funcionar

Antes de querer instalar o componente, é bom testá-lo meio na raça. Acesse seu site e crie os diretórios e arquivos necessários conforme mostrado neste tutorial. Depois, abra seu browser e chame o componente com http://www.seusite.com.br/index.php?option=com_ola&view=ola. Se tudo estiver em riba, o resultado deve ser parecido com este:

Frontend
Fig. 1 - Componente Ola no frontend

Finalmentes

Considere-se diplomado em VC biggrin

Este é o primeiro grau do MVC porque ainda ficou faltando o model, mas tudo gira em torno deste princípio. Se você entendeu a mecânica da coisa, criar o frontend completo, assim como o backend, vai ser bico!

Índice da série de tutoriais Componente 1.5 MVC

  1. Componente 1.5 - Padrão MVCComponente 1.5 - Padrão MVC
  2. Componente 1.5 MVC - Frontend
  3. Componente 1.5 MVC - Frontend II
  4. Componente 1.5 MVC - A tabela
  5. Componente 1.5 MVC - Interface Admin
  6. Componente 1.5 MVC - Funcionalidade admin
  7. Componente 1.5 MVC - Funcionalidade admin II

Referências

Hello World MVC 1 Component - The frame

игровые автоматы вулкан играть онлайн бесплатнорецепты мяса на сковороде грильооо полигон отзывы сотрудниковкласс лобановскийчастные объявления авитомоноподооо компания

Informações adicionais