Aldeia Numaboa

  • Increase font size
  • Default font size
  • Decrease font size
Home Informática Tutoriais e Programação Joomla Componente 1.5 MVC - Funcionalidade admin - Página 2

Componente 1.5 MVC - Funcionalidade admin - Página 2

Indique esta página Imprimir PDF
(15 votos, média 4.2 de 5)
Índice do Artigo
Componente 1.5 MVC - Funcionalidade admin
Controlador Ola
Vista e Modelo Ola
Formulário Ola
Todas as páginas

Neste ponto terminou o "lifting" do template. Pois prepare-se, porque agora é que começa o trabalho realmente pesado.

O controlador Ola

Para os olás na área administrativa já temos um controlador, mas este consegue apenas mostrar a lista das mensagens existentes na base de dados. Agora precisamos de um novo controlador que mostre um olá específico indicado pelo usuário e que coordene as ações de adicionar novos olás além de editar e remover olás existentes.

Adicionar e editar olás são tarefas muito parecidas - ambas apresentam uma tela com um formulário de edição. A diferença é que um novo olá precisa de um formulário em branco e um olá existente que esteja sendo editado mostre o mesmo formulário preenchido. Como as duas tarefas são semelhantes, vamos mapear a tarefa adicionar (novo) para o manipulador de edição. Isto será especificado no construtor do nosso controlador que vai se chamar ola.php e será uma extensão do controlador principal, o OlasController. Crie um novo diretório, /administrator/com_ola/controllers e coloque neste diretório o novo controlador:

<?php
/**
 * @package    Joomla.Tutoriais
 * @subpackage Componentes
 * administrator/components/com_ola/controllers/ola.php
 * @link       http://www.numaboa.com/
 * @license    Creative Commons by-nc-sa
*/
 
// evitar acesso direto
defined( '_JEXEC' ) or die( 'Acesso restrito' );
 
jimport('joomla.application.component.controller');
 
/**
 * Controlador do Componente Ola
 */
class OlasControllerOla extends OlasController
{
  /**
   * constructor (registra tarefas adicionais em métodos existentes)
   * @return void
   */
   function __construct()
   {
      parent::__construct();
 
      // Registrar tarefas extras
      $this->registerTask( 'add', 'edit' );
   }
   /**
   * Método para mostrar a vista
   *
   * @access    public
   */
   function display()
   {
      parent::display();
   }
 
   /**
    * mostrar o formulário de edição
    * @return void
    */
   function edit()
   {
      JRequest::setVar( 'view', 'ola' );
      JRequest::setVar( 'layout', 'formulario' );
      JRequest::setVar( 'hidemainmenu', 1);
 
      parent::display();
   }
?>

Este construtor registra tarefas adicionais em métodos existentes. O primeiro parâmetro de JController::registerTask( ) é a tarefa que deve ser mapeada, o segundo é o método para o qual deve ser mapeado.

Começamos apenas com a tarefa edit e por isso o trabalho do controlador é bastante simples. Tudo o que ele precisa fazer é especificar a vista e o template que devem ser carregados (a vista ola e o layout do formulário que ainda precisamos fazer). Também dizemos ao Joomla que desative o menu principal enquanto estivermos editando. Isto é para evitar que o usuário saia da tela de edição sem salvar alterações que possa ter feito.

Trazendo o novo controlador para a cena

Antes de criarmos o novo controlador ola.php, nosso componente possuía apenas um controlador (o principal). Quem chama os controladores é o script de entrada do nosso componente (administration/components/com_ola/admin.ola.php). Acontece que, como está no momento, ele desconhece a presença de outros controladores além do principal. Precisamos informá-lo de que existe um segundo, o ola.php que acabamos de produzir. Veja como fazer isto:

<?php
/**
 * @package    Joomla.Tutoriais
 * @subpackage Components
 * administration/components/com_ola/admin.ola.php
 * @link       http://www.numaboa.com/
 * @license    Creative Commons by-nc-sa
*/
 
// evitar acesso direto
defined( '_JEXEC' ) or die( 'Acesso restrito' );
 
// Requer o controlador base
require_once( JPATH_COMPONENT.DS.'controlador.php' );

Inserir - Quando houver mais controladores, basta obter seus nomes através do método JRquest::getVar('controller'). Se nenhum 'controller' for especificado na URL, então o principal será acionado. Caso seja especificado outro controlador, então precisamos obter sua localização com:

// Requerer controlador específico se solicitado
if($controlador = JRequest::getVar('controller')) {
  require_once (JPATH_COMPONENT.DS.'controllers'.DS.$controlador.'.php');
}

Alterar - Caso exista outro controlador estendendo o controlador principal, buscar o nome da classe para depois acioná-la:

// Criar o controlador
$nomeclasse  = 'OlasController'.$controlador;
$controlador = new $nomeclasse( );
 
// Obtém a tarefa solicitada
$controlador->execute( JRequest::getVar( 'task' ) );
 
// Redireciona de acordo com a tarefa
$controlador->redirect();
 
?>


Atualização Ter, 23.06.2009 16:51  

Na Aldeia

Há 122 visitantes online

3642 registros
2 hoje
12 nesta semana
19 neste mês

Boas vindas: RDM

Estatística

Membros: 3652
Artigos: 1046
Links: 90
Leituras: 6716321

Login

Kanji da hora




Faça contato







Não diga que não avisei ===> No Internet Explorer o meu site fica uma porcaria. Use qualquer outro navegador, porque não tenho tempo e nem paciência para ficar remendando todas as páginas só para atender as sandices do pessoal da microsoft. Que tal experimentar o Firefox, o Opera, o Chrome ou o Safari?