Как получить статус отправки формы - PullRequest
0 голосов
/ 18 октября 2011

Я ищу "аккуратный" (чистый) способ показать сообщение о состоянии после отправки формы.

Например, если пользователь обновляет свой профиль, я хочу показать DIV с текстом«Ваш профиль обновлен!».

Сейчас я делаю это следующим образом:

После публикации данных и вставки или обновления таблицы базы данных я делаю заголовок ("Расположение: updateprofile.php? Status = updated ");

Работает просто отлично, но не очень чисто.Мне не нужна строка запроса.

Еще один метод, который я попробовал, - установить переменную $ submit = 1;и не делать редирект после.Однако, когда пользователь обновляет свою информацию, он все еще показывает старую информацию в полях формы до обновления.Так что это тоже не работает.

Я знаю, что мог бы использовать AJAX для отправки формы и выполнить ее таким образом, однако, для того, что я делаю, я не хочу использовать AJAX.Мне нужно решение на стороне сервера.

Моя единственная другая мысль - установить переменную $ _SESSION, а затем каким-то образом удалить ее после отображения обновления состояния.

Любые идеи приветствуются!

Спасибо,

Тони

Ответы [ 2 ]

2 голосов
/ 18 октября 2011

Большую часть времени это обрабатывается с помощью переменных сеанса, которые хранят все отображаемые флэш-сообщения.

В общем представлении (макете, элементе) укажите что-то вроде

<?php
    if (isset($_SESSION['flashMessage']) && !empty($_SESSION['flashMessage'])) {
        echo <<<EOF
        <div class="flashMessage">
            {$_SESSION['flashMessage']}
        </div>
EOF;
        unset($_SESSION['flashMessage']);
    }
?>

Установите $_SESSION['flashMessage'] на "Ваш профиль обновлен".в любом коде обрабатывает ваши представления формы.

0 голосов
/ 18 октября 2011

Сохраните статусы в переменной массива сеанса, затем просто выполните:

<?php 

if ( !empty( $_SESSION['statuses'] ) ) {

  foreach ( $_SESSION['statuses'] as $status ) {

    // Wrap in tags and format as needed
    echo $status;  

  }

  $_SESSION['statuses'] = Array();

}
...