Je développe un composant joomla. J'ai ajouté un uploader avec ajax. Lorsqu'un fichier est chargé, un courrier de confirmation doit être envoyé. J'obtiens le bon élément de la base de données avec $id = $app->input->getInt('id');
Cela fonctionne, mais lorsque l'appel ajax est terminé, la variable $id
Est définie sur null
, ainsi dans l'e-mail le $customers->name
Est également null
. Pourquoi le modèle complet est-il rechargé après l'appel ajax?
J'appelle la méthode du contrôleur:
$.ajax({
cache: false,
url: "index.php?option=com_customercenter&task=mailAfterUpload&tmpl=component",
dataType: "json",
formData: {"companyID":"companyID"},
success: function(data) {
for(var i=0;i<data.length;i++) {
obj.createProgress(data[i]["name"],data[i]["path"],data[i]["size"]);
}
}
});
public function mailAfterUpload() {
$model = $this->getModel();
$response = $model->sendEmailAfterUpload();
}
public function sendEmailAfterUpload() {
$customers = $this->getCustomercenterData();
$mailer = JFactory::getMailer();
$config = JFactory::getConfig();
$sender = array(
$config->get( 'mailfrom' ),
$config->get( 'fromname' )
);
$mailer->setSender($sender);
$user = JFactory::getUser();
$recipient = $sender;
$mailer->addRecipient($recipient);
$body = "Der Kunde: <b>" . $customers->name . "</b> hat neue Daten übermittelt<br>Ordner '" . $customers->upload_folder . "' checken" ;
$subject = $customers->name . " hat neue Daten übermittelt";
$mailer->isHTML(true);
$mailer->Encoding = 'base64';
$mailer->setSubject($subject);
$mailer->setBody($body);
$send = $mailer->Send();
if ( $send !== true ) {
echo 'Error sending email: ' . $send->__toString();
} else {
echo 'Mail sent';
}
}
$app = JFactory::getApplication('site');
$id = $app->input->getInt('id');
Par défaut, chaque requête http est indépendante. Vous devez renvoyer tous les paramètres à chaque appel.
Sinon, si votre client peut conserver les cookies de session, vous pouvez alors stocker des variables côté serveur dans la session utilisateur pour conserver un état entre les demandes http.
$session = JFactory::getSession();
$session->set('myId', $myId);
...
$session = JFactory::getSession();
$myId = $session->get('myId');