web-dev-qa-db-fra.com

Suppression du formulaire RS avec message

J'utilise RS Forms Pro et je peux afficher une liste des formulaires soumis via un lien de menu. Je suis capable de voir , éditer et téléchargez les formulaires à partir de cette page. J'ai depuis ajouté supprimer la fonctionnalité qui fonctionne comme prévu. J'ai suivi l'excellent guide ici

Ce que j'essaie de faire maintenant est probablement assez simple, mais je n'arrive pas à le comprendre.

Lorsque vous appuyez sur le bouton "Supprimer", le formulaire est supprimé et la page est actualisée, très bien. Cependant, j'aimerais afficher un message (probablement dans la div de message système) qui se lit (quelque chose comme)

supprimé avec succès

La fonctionnalité de suppression fonctionne, mais je vais inclure mon code pour référence.

Le script appelé lors de l’affichage du formulaire est le suivant (il est défini dans RS Form config);

// First we have to check the "action" parameter from the URL
$action = JRequest::getWord('action');
if ($action == "delete") {

// If it returns true it will continue running the script 
  $id_value = JRequest::getInt('id');
  $formId_value = JRequest::getInt('formId');

// For security reasons we verify if the user has the right to edit submissions using RSFormProHelper
  if ($id_value && $formId_value && RSFormProHelper::canEdit($formId_value,$id_value)){

// If user has enough permission rights, run the query
    $db = JFactory::getDbo();
    $db->setQuery("DELETE FROM #__rsform_submission_values WHERE `SubmissionId`='". $id_value."'");
    $db->execute();
    $db->setQuery("DELETE FROM #__rsform_submissions WHERE `SubmissionId`='". $id_value."'");
    $db->execute();

// Redirect the user back to Manage directories 
    $itemId_value = JRequest::getInt('Itemid');
    $mainframe->redirect(JRoute::_('index.php?option=com_rsform&view=directory&Itemid='.$itemId_value, false));
  }

// If the user does not have permission to edit, he will be prompted with the language override created earlier:
  else
    $formLayout = JText::_('RSFP_DELETE_ERROR');
}

Le code de mon bouton de suppression est le suivant (remplacement de com_rsform);

<a href="<?php echo JRoute::_('index.php?option=com_rsform&formId='.$this->params->get('formId').'&action=delete&id='.$item->SubmissionId);?>">delete</a>

Lorsque je visualise la source de la page, je peux voir la div vide au-dessus de mon formulaire, où le message système irait probablement?

<div id="system-message-container"></div>

Je comprends que cela est lié aux formulaires RS, mais je veux comprendre comment je passe une valeur au message système div après une suppression réussie.

Suggestions bienvenues.

2
jonboy

Vous pouvez utiliser la fonction enqueueMessage pour afficher un message dans la section de sortie du système.

Dans le code que vous avez fourni, vous verrez ce qui suit:

$mainframe->redirect(JRoute::_('index.php?option=com_rsform&view=directory&Itemid='.$itemId_value, false));

Remplacez-le par ce qui suit:

$mainframe->redirect(JRoute::_('index.php?option=com_rsform&view=directory&Itemid='.$itemId_value, false), 'successfully deleted', 'success');

Pour faciliter la lecture:

$url  = 'index.php?option=com_rsform&view=directory&Itemid='.$itemId_value;
$msg  = 'successfully deleted';
$type = 'success';
$mainframe->redirect(JRoute::_($url, false), $msg, $type);

Mise à jour:

Désolé, il s'avère que la transmission d'un message dans la fonction de redirection est obsolète. Au lieu de cela, enqueueMessage devrait être utilisé avant la redirection, comme suit:

$url  = 'index.php?option=com_rsform&view=directory&Itemid='.$itemId_value;
$msg  = 'successfully deleted';
$type = 'success';
$mainframe->enqueueMessage($msg, $type);
$mainframe->redirect(JRoute::_($url, false));
2
Lodder