PHP:如何在Flash消息中添加特定标题?

时间:2016-02-14 00:57:22

标签: php

我正在使用PHP处理flash消息,但我希望为每个flash消息都有一个特定的标题。我的header.php中设置了我的flash消息容器,所以我可以在我的网站上的任何地方使用这个系统:

        <?php if(isset($_SESSION["flash-message"])): ?>
            <?php foreach($_SESSION["flash-message"] as $type => $message): ?>
            <div class="alert alert-<?= $type; ?>">
                <p><?= $message; ?></p>
            </div>
            <?php endforeach; ?>
        <?php endif; ?>

要执行它,我使用它:

$_SESSION["flash-message"]["success"] = "Test";

所以,我有:

http://prntscr.com/a2ylze

现在,我想要一个头衔,你知道吗?这样的事情:

$_SESSION["flash-message"]["title" = "The title"]["success"] = "The message"

就是这样的。我希望标题上方的标题。

2 个答案:

答案 0 :(得分:2)

简答:使用数组或对象存储带有相应标题的邮件。

$_SESSION["flash-message"]["success"] = array("Title", "The Message");

您的代码将如下:

<?php if(isset($_SESSION["flash-message"])): ?>
        <?php foreach($_SESSION["flash-message"] as $type => $message): ?>
        <div class="alert alert-<?= $type; ?>">
            <h2><?= $message[0]; ?></h2>
            <p><?= $message[1]; ?></p>
        </div>
        <?php endforeach; ?>
    <?php endif; ?>

编辑: 如果您有多个成功消息会怎样?您当前的代码不支持多个&#34;相同的类型&#34;消息。它应该是:

$_SESSION["flash-message"]["success"][] = array("Title", "The Message"); 

存储多个&#34;同类型&#34;消息。

EDIT-2: 您还可以使用对象方法 - 更具可读性。还包含我上面提到的多种消息能力。

<?php 
    $message = new stdClass();
    $message->title = "Title";
    $message->message = "The Message";
    $_SESSION["flash-message"]["success"][] = $message;
?>
<?php if(isset($_SESSION["flash-message"])): ?>
    <?php foreach($_SESSION["flash-message"] as $type): ?>
        <?php foreach ($type as $message): ?>
        <div class="alert alert-<?= $type; ?>">
            <h2><?= $message->title; ?></h2>
            <p><?= $message->message; ?></p>
        </div>
        <?php endforeach; ?>
    <?php endforeach; ?>
<?php endif; ?>

答案 1 :(得分:1)

$_SESSION["flash-message"]应该是消息数组消息应该有 event_type 标题内容

您可以使用关联数组以多种形式对消息建模。请参阅此示例 message 使用关联数组建模:

$a_message = [
    "event_type" => "success",
    "title" => "The title"
    "content" => "The message"
];

这样,您可以像这样实现 foreach 循环:

<?php if(isset($_SESSION["flash-message"])): ?>
    <?php foreach($_SESSION["flash-message"] as $message): ?>
    <div class="alert alert-<?= $message["event_type"]; ?>">
        <h1><?= $message["title"]; ?></p>
        <p><?= $message["content"]; ?></p>
    </div>
    <?php endforeach; ?>
<?php endif; ?>