Informática Numaboa - Tutoriais e Programação
Componente 1.5 MVC - Funcionalidade admin
Ter 22 Jan 2008 14:10 |
- Detalhes
- Categoria: Joomla
- Atualização: Segunda, 02 Julho 2012 19:31
- Autor: vovó Vicki
- Acessos: 16371
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:
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:
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:
Alterar - Caso exista outro controlador estendendo o controlador principal, buscar o nome da classe para depois acioná-la: