Joomla3 - 表单提交后如何显示成功通知(后处理)

时间:2014-02-06 11:40:46

标签: php forms joomla3.0

我正在编写自定义联系表单,此表单是标准的POST表单。 表单看起来像这样:

<form action="/path/to/my/phpfile.php" method="post" id="form">
          <input type="email" id="email" name="email"/>
          <input type="text" id="name" name="name"/>
          <input type="submit" value="submit"/>
</form>

现在,我的PHP文件看起来像这样:

<?php
$email_from = $_POST['email']; 
$fromname = $_POST['name'];
$email_to = 'test@email.com';

$email_subject = 'Subject text....';
$email_message = 'Email message.....';

//Send the email
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers); 

header('location: http://www.mywebsite.com/destination/');
?>

所以,我想要做的是将成功通知/消息显示为标准的Joomla系统消息。

我注意到Joomla消息前端包含在我的模板中的这个容器中:

<div id="system-message-container">
<div id="system-message">
<div class="alert alert-notice"><a class="close" data-dismiss="alert">×</a>
<h4 class="alert-heading">Header text...</h4>
<div>
        <p>Message....</p>
</div>
</div>
</div>
</div>

问题是,如何在PHP文件中创建一个代码,将系统消息传输到Joomla中的目标页面? 我正在使用Joomla v.3.2.1

4 个答案:

答案 0 :(得分:2)

此外,如果您要将用户发送到仍在您的Joomla中的位置!网站,你可以显示一个Joomla!系统消息仍然可以使用Joomla的内置重定向功能进行重定向,即在用户到达目标页面时显示消息。像这样:

  // give joomla the message to display...
  $app = JFactory::getApplication();
  $app->enqueueMessage('A message for the user');

  // ...and still do a redirect
  $app->redirect('http://www.myJoomlaSite.com/index.php?option=com_whatever');

因此,只要页面在您的Joomla中,您的用户即使在进行重定向之后仍会在目标页面上收到您的消息!站点

答案 1 :(得分:0)

默认情况下,用户在提交表单joomla后单击提交底部转到'/path/to/my/phpfile.php'方向。当你在这个方向回应一些文字时,这个文字向用户显示。

答案 2 :(得分:0)

您可以使用第三方扩展程序,将您的php代码显示为文章中的模块。这样你就可以编写自己的成功通知。

以下是为您完成工作的扩展程序列表:http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-content

我会尝试不使用Jumi,它可以工作,但在我的情况下,它创造了一些错误。

答案 3 :(得分:0)

我终于找到了如何利用Joomla通知消息系统中的构建。事实证明这很简单。

要显示系统消息,您只需使用以下其中一行:

//Standard message
JFactory::getApplication()->enqueueMessage($mymessage);

//Notice message
JError::raiseNotice(100, $mymessage);

//Warning message
JError::raiseWarning( 100, $mymessage );

所以我在我的情况下做的是发送一个URL变量,例如?消息=成功 在我的模板文件中,我只是做了一个这样的if语句:

if($_GET["message"] == "success") {
            $displaymsg = "My message text..";
            JFactory::getApplication()->enqueueMessage($displaymsg);
}

我希望这能帮助处于同样情况的其他人。