Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [symfony] forward404 - problem z $message
Forum PHP.pl > Forum > PHP > Frameworki
Teamon
w akcji
Kod
$this->forward404($message);

i teraz moje pytanie czy owe $message moze byc gdziekolwiek i jakkolwiek wywolane?
Troche mi sie nie widzi wyswietlac taka sama strone e404 dla wszystkich akcji, przydloby sie cos w stylu: Product not found/Article not found etc.

Z tego co przejzalem kod sf to:
Kod
forward404() wywoluje sfError404Exception

class sfError404Exception extends sfException
{
  public function __construct($message = null, $code = 0)
  {
    $this->setName('sfError404Exception');
    parent::__construct($message, $code);
  }

  public function printStackTrace($exception = null)
  {
    sfContext::getInstance()->getController()->forward(sfConfig::get('sf_error_404_module'), sfConfig::get('sf_error_404_action'));
  }
}


czyli tylko wywolanie akcji bez $message.

Jakies pomysly jak przekazac i wyswietlic owe $message ?
jupeter
Przyjrzyj się atrybutom flashowym (Flash attributes) - sądzę że one mogą Ci pomóc w Twoim problemie smile.gif

Jak po przeczytaniu dokumentacji będziesz miał wątpliwości, to wal śmiało
Teamon
Wiem co to flash.

No i panowie z sf przycieli. Po kiego wtedy ten parametr jak jest bezuzyteczny? (chyba tylko w logach)
Juz chyba wygodniej bedzie dawac return '404' czy nawet sfView::ERROR. No chyba ze da sie nadpisac sfError404Exception to wtedy zaden problem, dodam sobie do parametrow requesta 'message'
Jojo
No właśnie sam sobie odpowiadasz na swoje pytanie: ten parametr jest przydatny w logach. A jeśli chodzi o wyświetlenie komunikatu dla użytkownika, to jupeter podał Ci dobre rozwiązanie.

Możesz to zrobić na przykład tak:

  1. <?php
  2. $message = 'Article not found';
  3. $this->setFlash($message);
  4. $this->forward404($message);
  5. ?>

Później tylko przechwytujesz flasha w szablonie 404 i gotowe.
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.