flash_set, flash_get в PHP? - PullRequest
       228

flash_set, flash_get в PHP?

0 голосов
/ 20 февраля 2010

, поэтому мне сказали в этом вопросе: PHP / Javascript передача сообщения на другую страницу

чтобы использовать flash_set и flash_get, концепцию под названием "Rails flash" .. Теперь вы можете использовать их в php эти функции? Я действительно могу найти их на сайте библиотеки php, так что я не уверен ..

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

В PHP нет встроенной функции для достижения этой цели, но если вы будете использовать некоторые фреймворки, как CakePHP (который вдохновлен рельсами), вы найдете это довольно просто:

// In the controller
$this->Session->setFlash('message to flash');

// In the view
$session->flash();

Бьюсь об заклад, некоторые другие рамки имеют это покрыто.

2 голосов
/ 20 февраля 2010

Вы можете сохранить сообщения, которые вы хотите мигать, при запросе следующей страницы в $ _SESSION. Я не знаю точно, как методы работают в рельсах, но, надеюсь, эти две функции могут быть полезны:

function flash_get()
{
    // If there are any messages in the queue
    if(isset($_SESSION['flashMessages']))
    {
        // Fetch the message queue
        $messages = $_SESSION['flashMessages'];

        // Empty out the message queue
        unset($_SESSION['flashMessages']);

        return $messages;
    }

    // No messages so just return an empty array
    return array();
}

function flash_set($message)
{
    // If the queue is currently empty we need to create an array
    if(!isset($_SESSION['flashMessages'])) {
        $_SESSION['flashMessages'] = array();
    }

    // Fetch the current list of messages and append the new one to the end
    $messages = $_SESSION['flashMessages'];
    $messages[] = $message;

    // Store the message queue back in the session
    $_SESSION['flashMessages'] = $messages;
}

Просто вызовите flash_set () с сообщением, которое вы хотите сохранить, и flash_get () вернет вам этот массив и очистит очередь при следующем запросе страницы.

Вам также нужно будет убедиться, что вы вызываете session_start () при каждом запросе страницы, чтобы эти методы работали.

...