检测是否发生 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 消息组件。