it-swarm.dev

Come funziona l'invio del modulo con viste / attività?

Ciao, ho una domanda sui moduli di Joomla. Voglio capire come Joomla lavora internamente, in particolare sono interessato a com_installer componente per sapere come funziona. E ho trovato un modulo in default.php file in com_installer/views/install/tmpl cartella.

In questo file sono presenti pulsanti personalizzati per l'invio di un modulo. E sono interessato a come i pulsanti in realtà innescano l'installazione di componenti, moduli o altre cose stesse. Nel corpo del modulo vedo alcuni valori nascosti come

<input type="hidden" name="task" value="install.install" />

Quindi questo valore nascosto probabilmente attiva un'installazione chiamando un controller di installazione e il metodo di installazione di quel controller.

Ma la domanda è: come fa Joomla? Dov'è il codice che reindirizza l'URL da view = install to task = install.install? In altre parole, come Joomla sa che il valore dall'input nascosto dovrebbe andare all'URL?

5
Bogdan

@RiccardoZorn è corretto al livello base. Esistono due campi modulo nascosti che sono comunemente impostati: opzione e attività.

Opzione: il nome del componente come com_example Indica alla pagina di caricare quel componente.

Attività: una funzione del controller o un controller e una funzione da chiamare. Se ha un '.' in esso quindi la parte precedente specifica un controller da caricare e quindi chiama la funzione con il nome della parte dopo il periodo. Se non c'è alcun periodo, eseguirà semplicemente la funzione nel controller predefinito (di solito controller.php nella cartella di base del componente.


Inoltre, chiedi in particolare i pulsanti della barra degli strumenti. Ciò comporta un po 'di javascript che viene automaticamente caricato da Joomla per alimentare i pulsanti.

Quando si fa clic sul pulsante, dovrebbe attivare Joomla.submitbutton(). Questa funzione accetta un valore che è l'attività da impostare in base al pulsante selezionato. Quindi, se fai clic sul pulsante Salva, questo imposterà generalmente l'attività su import.save. (Non penso che quel pulsante esista effettivamente in questo componente, ma molti altri lo avranno.)

La funzione submitbutton di default la spinge semplicemente su un'altra funzione submitform. Questa funzione sposta quindi l'attività nel campo nascosto appropriato. Alla fine questo invia il modulo.

Quindi, anche se quei pulsanti della barra degli strumenti non sono pulsanti di invio (o di solito nemmeno nel tag del modulo), aggiorneranno comunque il valore nascosto di task e invieranno il modulo usando javascript.

Puoi trovare le funzioni javascript principali qui: media/system/js/core-uncompressed.js

3
David Fritsch

L'attività è un metodo nel controller.php nella cartella del componente principale (se è una singola parola), oppure il nome del controller e il suo metodo separati da un punto, ovvero install.install Saranno analizzati dal metodo install() in controllers/install.php

2
Riccardo Zorn