web-dev-qa-db-ja.com

メッセージ付きのRSフォーム削除

RS Forms Proを使用していて、送信されたフォームのリストをメニューリンクから表示できます。 vieweditdownloadこのページのフォーム。それ以来、期待どおりに機能するdelete機能を追加しました。私は優れたガイドに従いました ここ

私が今やろうとしていることはおそらく非常に単純ですが、それを理解することはできません。

「削除」ボタンを押すと、フォームが削除され、ページが更新されます。しかし、私は(何かのような)を読むメッセージ(おそらくシステムメッセージdiv内に)を表示したいと思います

正常に削除されました

削除機能は動作しますが、参照用にコードを含めます。

フォーム表示で呼び出されるスクリプトは次のとおりです(これはRSフォーム構成で設定されます)。

// 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');
}

私の削除ボタンのコードは次のとおりです(com_rsformのオーバーライド)。

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

ページのソースを表示すると、フォームの上に空のdivが表示されますが、システムメッセージはおそらくそこに表示されますか?

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

これはRSフォームに関連していることを理解していますが、削除が成功したときにシステムメッセージdivに値を渡す方法を理解したいと思っています。

提案は大歓迎です。

2
jonboy

enqueueMessage関数を使用して、システム出力セクションにメッセージを表示できます。

提供したコードでは、次のようになります。

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

次のものに置き換えます。

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

見やすくするために:

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

更新:

申し訳ありませんが、リダイレクト機能でのメッセージの受け渡しは推奨されていません。代わりに、リダイレクトの前にenqueueMessageを使用する必要があります。

$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