检测是否发生 PHP 异常并根据该异常输出闪现消息
Detect if a PHP exception occurred and output flash message based off that exception
我正在使用 Swiftmailer 发送电子邮件,我目前有一个 try/catch 块来根据 Swift_RfcComplianceException 查看电子邮件地址是否有效。我目前捕获错误并在屏幕上输出 $e->getMessage() 错误。在电子邮件的表单提交上,我设置了一个变量,以便在电子邮件发送成功时吐出一条成功消息。
问题:如何使用相同的闪现消息区域根据我的 Swiftmail 文件是否捕获到异常来输出错误消息。我如何使它发生在同一页面上?我没有使用 AJAX 而是 Page Post 返回。现在我得到的只是一个带有文本的白屏,我希望错误消息位于提交表单的位置。谢谢。
HTML
<?php if(isset($_SESSION['message'])):?>
<div id="success-alert" class="alert alert-success text-center">
<?php
echo $_SESSION['message'];
unset($_SESSION['message']);
?>
</div>
<?php elseif(isset($_SESSION['email_error'])) :?>
<div id="success-alert" class="alert alert-success text-center">
<?php
echo $_SESSION['email_error'];
unset($_SESSION['email_error']);
?>
</div>
<?php endif; ?>
Swiftmailer
try {
// Create a message
$message = (new Swift_Message($_POST['subject']))
->setFrom('ME@YOU.COM')
->setTo($finalEmailList) //Array of email address
->setBody($_POST['message'], 'text/html')
->setReplyTo('you@me.com');
} catch (Swift_RfcComplianceException $e) {
print($e->getMessage());
}
PHP
if (isset($_POST['submit_email'])) {
require_once 'views/Swiftmail.php';
$_SESSION['message']= "Email Sent Successfully";
$_SESSION['email_error'] = "Invalid Email Address Entered";
}
您只需从 "main" PHP 代码中移动错误消息设置行...
session_start();
if (isset($_POST['submit_email'])) {
require_once 'views/Swiftmail.php';
}
到您的 Swiftmail.php 文件 ...
try {
// Create a message
$message = (new Swift_Message($_POST['subject']))
->setFrom('ME@YOU.COM')
->setTo($finalEmailList) //Array of email address
->setBody($_POST['message'], 'text/html')
->setReplyTo('you@me.com');
$_SESSION['message']= "Email Sent Successfully";
} catch (Swift_RfcComplianceException $e) {
$_SESSION['email_error'] = "Invalid Email Address Entered";
}
仅供参考,大多数现代 PHP 框架都内置了 flash 消息组件。
我正在使用 Swiftmailer 发送电子邮件,我目前有一个 try/catch 块来根据 Swift_RfcComplianceException 查看电子邮件地址是否有效。我目前捕获错误并在屏幕上输出 $e->getMessage() 错误。在电子邮件的表单提交上,我设置了一个变量,以便在电子邮件发送成功时吐出一条成功消息。
问题:如何使用相同的闪现消息区域根据我的 Swiftmail 文件是否捕获到异常来输出错误消息。我如何使它发生在同一页面上?我没有使用 AJAX 而是 Page Post 返回。现在我得到的只是一个带有文本的白屏,我希望错误消息位于提交表单的位置。谢谢。
HTML
<?php if(isset($_SESSION['message'])):?>
<div id="success-alert" class="alert alert-success text-center">
<?php
echo $_SESSION['message'];
unset($_SESSION['message']);
?>
</div>
<?php elseif(isset($_SESSION['email_error'])) :?>
<div id="success-alert" class="alert alert-success text-center">
<?php
echo $_SESSION['email_error'];
unset($_SESSION['email_error']);
?>
</div>
<?php endif; ?>
Swiftmailer
try {
// Create a message
$message = (new Swift_Message($_POST['subject']))
->setFrom('ME@YOU.COM')
->setTo($finalEmailList) //Array of email address
->setBody($_POST['message'], 'text/html')
->setReplyTo('you@me.com');
} catch (Swift_RfcComplianceException $e) {
print($e->getMessage());
}
PHP
if (isset($_POST['submit_email'])) {
require_once 'views/Swiftmail.php';
$_SESSION['message']= "Email Sent Successfully";
$_SESSION['email_error'] = "Invalid Email Address Entered";
}
您只需从 "main" PHP 代码中移动错误消息设置行...
session_start();
if (isset($_POST['submit_email'])) {
require_once 'views/Swiftmail.php';
}
到您的 Swiftmail.php 文件 ...
try {
// Create a message
$message = (new Swift_Message($_POST['subject']))
->setFrom('ME@YOU.COM')
->setTo($finalEmailList) //Array of email address
->setBody($_POST['message'], 'text/html')
->setReplyTo('you@me.com');
$_SESSION['message']= "Email Sent Successfully";
} catch (Swift_RfcComplianceException $e) {
$_SESSION['email_error'] = "Invalid Email Address Entered";
}
仅供参考,大多数现代 PHP 框架都内置了 flash 消息组件。