0

尝试修改闪信功能,但无论如何都不起作用。$_SESSION[$type][$name]等等格式是不是不能接受?

function flash($type = '', $name = '', $message = '', $class = '', $dismiss = '' )
{
//We can only do something if name exists
if($name)
{   
    //No message, create it
    if($message && empty($_SESSION[$type][$name]))
    { 
        $_SESSION[$type][$name] = $message;
        $_SESSION[$type][$name][$class] = $class;
        $_SESSION[$type][$name][$dismiss] = $dismiss;
    }
    //Message exists, display it
    else if($_SESSION[$type][$name] && empty($message))
    {
        echo '<div class="'.$_SESSION[$type][$name][$class].'">'.$_SESSION[$type][$name].' '.$_SESSION[$type][$name][$dismiss].'</div>';
        unset($_SESSION[$type]);
    }
}
}

用法是:

// set a message
<?php flash( 'error', 'test', 'whats up?', 'info', 'TRUE' ); ?>

// display a message
<?php flash( 'test' ); ?>
4

1 回答 1

0

我认为你遇到的问题是你在$message这里用数组覆盖:

$_SESSION[$type][$name] = $message; // Sets the message
$_SESSION[$type][$name][$class] = $class; // Overwrites it with an array

您需要做的就是将消息保存到同一个数组中(并确保您给它的索引永远不会与$classor相同$dismiss。例如:

$_SESSION[$type][$name]['messagetext'] = $message;

然后,当然,更新代码的显示部分以使用该索引:

echo '<div class="'.$_SESSION[$type][$name][$class].'">'.$_SESSION[$type][$name]['messagetext'].' '.$_SESSION[$type][$name][$dismiss].'</div>';

编辑:在评论中讨论之后,最终代码可能如下所示,前提是每个组合只有一条$type消息$name

function flash($type = '', $name = '', $message = '', $class = '', $dismiss = '' )
{
//We can only do something if name exists
if($type)
{   
    //No message, create it
    if($message && empty($_SESSION[$type][$name]))
    { 
        $_SESSION[$type][$name]['message'] = $message;
        $_SESSION[$type][$name]['class'] = $class;
        $_SESSION[$type][$name]['dismiss'] = $dismiss;
    }
    //Message exists, display it
    else if($_SESSION[$type] && empty($message))
    {
        foreach($_SESSION[$type] as $name=>$array) {
            echo '<div class="'.$_SESSION[$type][$name]['class'].'">'.$_SESSION[$type][$name]['message'].' '.$_SESSION[$type][$name]['dismiss'].'</div>';
        }
        unset($_SESSION[$type]);

    }
}
}

用法是:

// set a message
<?php flash( 'error', 'test', 'whats up?', 'info', 'TRUE' ); ?>

// display all $type= 'error' messages
<?php flash( 'error' ); ?>
于 2013-11-15T16:25:59.147 回答