Oi eu tenho uma pergunta sobre formulários Joomla. Eu quero entender como o Joomla funciona internamente, especialmente eu estou interessado em com_installer
componente para saber como está funcionando. E eu encontrei um formulário em default.php
arquivo em com_installer/views/install/tmpl
pasta.
Neste arquivo, existem botões personalizados para enviar um formulário. E estou interessado em saber como os botões realmente acionam a instalação de componentes, módulos ou outras coisas. No corpo do formulário, vejo alguns valores ocultos como
<input type="hidden" name="task" value="install.install" />
Portanto, esse valor oculto provavelmente aciona uma instalação chamando um controlador de instalação e o método de instalação desse controlador.
Mas a questão é como o Joomla faz isso? Onde o código está redirecionando o URL de view = install para task = install.install? Em outras palavras, como o Joomla sabe que o valor da entrada oculta deve ir para o URL?
@RiccardoZorn está correto no nível base. Existem dois campos de formulário ocultos normalmente definidos: opção e tarefa.
Opção: O nome do componente como com_example
Direciona a página para carregar esse componente.
Tarefa: Uma função do controlador ou um controlador e uma função para chamar. Se tiver um '.' nela, a peça anterior especifica um controlador para carregar e, em seguida, chame a função com o nome da peça após o período. Se não houver um período, ele executará a função no controlador padrão (geralmente controller.php na pasta base do componente.
Você também pergunta especificamente sobre os botões da barra de ferramentas. Isso envolve um pouco de javascript que é carregado automaticamente pelo Joomla para ativar os botões.
Quando o botão é clicado, ele deve acionar Joomla.submitbutton()
. Esta função assume um valor que é a tarefa a ser definida com base no botão clicado. Portanto, se você clicar no botão Salvar, isso normalmente definirá a tarefa como import.save
. (Não acho que esse botão exista realmente neste componente, mas muitos outros o terão.)
A função submitbutton
por padrão apenas a envia para outra função submitform
. Essa função mudará essa tarefa para o campo oculto apropriado. Finalmente, este envia o formulário.
Portanto, mesmo que esses botões da barra de ferramentas não sejam botões de envio (ou mesmo na tag de formulário normalmente), eles ainda atualizarão o valor oculto de task
e enviarão o formulário usando javascript.
Você pode encontrar as principais funções javascript aqui: media/system/js/core-uncompressed.js
A tarefa é um método no controller.php na pasta do componente principal (se for uma única palavra) ou o nome do controlador e seu método separados por um ponto, ou seja, install.install
Será analisado pelo método install()
em controllers/install.php