Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: System własnych komunikatów w MVC
Forum PHP.pl > Forum > PHP
plastus321
Witam wszystkich forumowiczów!

Od paru dni mnie zastanawia kwestia tego jak można w MVC w najlepszy sposób przekazywać komunikaty. Mianowicie mamy np. taką sytuację:

Osoba która NIE jest użytkownikiem naszej strony wpisuje adres URL do strony na którą nie ma dostępu i w odpowiedzi zostaje przekierowana na stronę główną na której jest panel logowania, ale również u góry tej strony głównej pojawia się komunikat na czerwono z informacją żeby móc zobaczyć tę podstronę musi się zalogować.

Wiele osób piszę że można wykorzystać np. metodę $_GET lub sesje

-ale czy to jest najlepszy sposób?
-w jaki sposób ma to rozwiązana np. taka joomla? ma specjalne klasy od wyjątków które przekazuje z controllera i wywołuje w odpowiednim miejscu w widoku?

Interesuje mnie tylko po prostu jak przekazać komunikat po przekierowaniu na inną stronę.

Mam nadzieję, że udało mi się to w miarę "łopatologicznie" napisać o co mi chodzi i jeśli mogę prosić to w taki sam sposób chciałbym mieć to wyjaśnione tongue.gif

Z góry dziękuję za pomoc. POZDRAWIAM! i przepraszam że zmarnowałem parę minut na lekturę tongue.gif
smile.gif
Turson
To się nazywa Flash Messages. Działa w oparciu na sesji.
Jeżeli user nie ma dostępu -> zapisujesz w sesji url jakiś komunikat. Przekierowujesz na daną stronę czyli np. do formularza logowania. Twój layout sprawdza czy istnieje jakaś wiadomość Flash Message i ją wyświetla
plastus321
Czyli rozumiem że z tym flash message mogę użyć np. header('Location: index.php') i wyświetlić komunikat, tak?
Czy raczej masz inne rozwiązanie niż header('Location: index.php')?
Turson
Dokładnie tak. Tyle że żeby to było bardziej eleganckie stwórz klasę z metodami do stworzenia przekierowania i sprawdzenia czy obecnie jest przekierowanie.
plastus321
Dzięki, zrobiłem tak jak powiedziałeś wink.gif poczytałem jeszcze trochę o tym i zrobiłem własną klasę obsługującą komunikaty smile.gif

Jeśli ktoś by szukał przykładowego rozwiązania tego to podaje tu jeden z nich (źródło: http://stackoverflow.com/questions/1198806...ge-with-message)


  1.  
  2. // plik profli.php który jest np. zabezpieczony przed niezalogowanymi osobami
  3.  
  4. if (mysqli_affected_rows($link) == 1)
  5. {
  6. //succes
  7. $_SESSION['message'] = 'Musisz się zalogować';
  8. redirect_to('index.php');
  9. }
  10.  
  11. // plik index.php
  12.  
  13. if (!empty($_SESSION['message'])) {
  14. echo '<p class="message"> '.$_SESSION['message'].'</p>';
  15. unset($_SESSION['message']);
  16. }
  17.  


Pozdrawiam i jeszcze raz dzięki za pomoc! smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.