Come (purtroppo) spesso accade .. si faccia una domanda (per quanto semplice o complicata che sia) e si dia una risposta.
Ho trovato l'escamotage per gestire le chiamate Ajax fatte in override "pesante" di un componente/modulo.
La prima cosa da fare è creare (esistono svariati modi nel farlo) un componente basico che abbia una view e un controller.
Io l'ho chiamato com_myajax
Nel file controller.php ho inserito il mio task (function) per verificare qualcosa.
Esempio pratico.
Verifico se il valore che immetto nel form è 1 o 2.
Default.php (del componente, modulo ecc della quale facciamo l'override)
<input class="form-control" id="test" name="test" maxlength="1" type="text">
<div id="risultato" style="max-width: 80%;">
<button id="avanti"type="button" class="button-form-registrazione">Avanti</button>
Il file con la chiamata Ajax, sarà piu o meno questo.
$.ajax({
//imposto il tipo di invio dati (GET O POST)
type: "POST",
//Dove devo inviare i dati recuperati dal form?
url: 'index.php?option=com_myajax&view=taskajaxes&task=validateform',
//Quali dati devo inviare?
data: "test=" + test,
dataType: "html",
//Inizio visualizzazione errori
success: function(msg)
{
$("#risultato").html(msg); // espongo il risultato
// fai qualcosa.....
},
error: function()
{
alert("Chiamata fallita, si prega di riprovare..."); //sempre meglio impostare una callback in caso di fallimento
}
});
Nel file controller.php dentro la classe del componente inseriamo la funzione.
public function validateform() {
$app = Factory::getApplication(); // equivalent of $app = JFactory::getApplication();
$input = $app->input;
if ($input->exists('test')) {
if ($input->get('test') == 1) {
echo 1;
jexit();
} else if ($input->get('test') == 2) {
echo 2;
jexit();
} else {
echo 'valore non valido';
jexit();
}
} else {
jexit();
}
}
il comando jexit(); fa in modo che la pagina carichi solo il valore richiesto e non restituisca l'interno html della view.
Sono consapevole che probabilmente questo non è il metodo migliore, però funziona e, se non vado errato, non ha falle di sicurezza utilizzando i parametri di Joomla..
Poi se qualcuno che ha piu esperienza e competenza di me mi vuole correggere, ne sarei ben felice!
Spero di aver, cmq, aiutato qualcuno.
A.