Pytanie do zainteresowanych: ;-)
No ale jak, przecież po przeładowaniu obiekt tworzy się na nowo i wszystkie wartości zmiennych idą w las. Więc nie można sobie przekierować a potem wyśwetlić zmiennej, chyba że jest to zmienna sesyjna, ale odwoływałem się do jego sposobu thornag'a:
że wystarczy zmienić kolejność w jego przypadku i wszystko się posypię:
tj.
wpierw zrobię w kodzie:
<?php
echo $msg->ShowMessage() // ewentualnie flaga jako parametr. ?>
a dopiero potem
<?php
if(akcja()) { /// jesli jakas tam operacja jest udana
$msg->AddMessage("Operacja udana");
} else { // jesli niedudana
$msg->AddMessage("Operacja nieudana"); // mozna dodawac jeszcze parametry e.g flagi bledow itp.
}
?>
To jeżeli nie zapiszę zmiennej do sesji i nie przeładuję strony to nic się nie pokaże.
I druga kwestia w tym wypadku.
Czy używać jednej zmiennej sesyjnej i przy każdym wydarzeniu napisywać ją? Ale wtedy możemy wyświetlić tylko jedną wiadomość.
A jeżeli dla każdego komunikatu dawać inna nazwę zmiennej sesyjnej to jak z jej czyszczeniem?
------
Edit:
OK, już mam rozwiązany problem ;-) Dzięki wszystkim za pomoc. Jakby co to rozwiązałem to tak:
Przykładowa metoda dodawania danych:
<?php
public function form_addRekord() {
if($this->form->validate()) {
try {
// dodawanie do DB.
$this->addRekordFromPost(array('id', 'MAX_FILE_SIZE')); // sprawdzam czy sa jakies pliki do uploadu
if($_FILES) {
$this->handleFileUpload();
}
$this->addMsg('Dodano nowy rekord.'); // ustawiam komunikat
$tuJestem = $_SERVER['PHP_SELF'];
header("Location: $tuJestem"); // robie przekierowanie
} catch (Exception $e) {
MyErrorHandling::handle_error($e);
}
} else {
$this->form->addElement('submit', null, 'Dodaj');
$this->form->display();
}
}
?>
Metody obsługujące komunikaty.
<?php
public function showMsg() {
echo $_SESSION['userMsg']; $_SESSION['userMsg'] = null;
}
public function addMsg($string) {
$_SESSION['userMsg'] = $string;
}
?>
No i potem na stronie:
<?php
$cms->showMsg();
$cms->form_addRekord();
?>