Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] v3.3 Error wyświetlany w template
Forum PHP.pl > Forum > PHP > Frameworki
colachips
Cześć,

dostałem w spadku aplikację napisaną w 3.1 i polecenie upgrade do 3.3. A więc zajrzawszy do dokumentacji wszystko w miarę wyszło oprócz błędów, które chciałbym aby się wyświetłały jako 404 w template. Zgodnie z dokumentacją napisałem:
  1. class HTTP_Exception extends Kohana_HTTP_Exception {
  2.  
  3. /**
  4.   * Generate a Response for all Exceptions without a more specific override
  5.   *
  6.   * The user should see a nice error page, however, if we are in development
  7.   * mode we should show the normal Kohana error page.
  8.   *
  9.   * @return Response
  10.   */
  11. public function get_response()
  12. {
  13. // Lets log the Exception, Just in case it's important!
  14. Kohana_Exception::log($this);
  15.  
  16. if (Kohana::$environment >= Kohana::DEVELOPMENT)
  17. {
  18. // Show the normal Kohana error page.
  19. return parent::get_response();
  20. }
  21. else
  22. {
  23. // Generate a nicer looking "Oops" page.
  24. $view = View::factory('errors/404');
  25.  
  26. $response = Response::factory()
  27. ->status($this->getCode())
  28. ->body($view->render());
  29.  
  30. return $response;
  31. }
  32. }
  33. }


No i to wyświetla widok errors/404 a ja chcę żeby ten widok szedł przez template (czyli żeby był wywoływany kontroler errors/404). Było tak, ale to nie działa w 3.3:
  1. class Kohana_Exception extends Kohana_Kohana_Exception
  2. {
  3. public static function handler(Exception $e)
  4. {
  5. try
  6. {
  7. // Throw errors when in development mode
  8. if (Kohana::$environment=== Kohana::DEVELOPMENT)
  9. {
  10. parent::handler($e);
  11. }
  12. else
  13. {
  14. Kohana::$log->add(Log::ERROR, Kohana_Exception::text($e));
  15.  
  16. $attributes = array(
  17. 'action' => 500,
  18. 'origuri' => rawurlencode(Arr::get($_SERVER, 'REQUEST_URI')),
  19. 'message' => rawurlencode($e->getMessage())
  20. );
  21.  
  22. if ($e instanceof Http_Exception)
  23. {
  24. $attributes['action'] = $e->getCode();
  25. }
  26.  
  27. // Error sub request
  28. echo Request::factory(Route::get('error')->uri($attributes))
  29. ->execute()
  30. ->send_headers()
  31. ->body();
  32. }
  33. }
  34. catch (Exception $e)
  35. {
  36. var_dump($e->getMessage());
  37. var_dump($e->getTraceAsString());
  38. }
  39. }
  40. }


W google nie mogę znaleźć czegoś co pozwalałoby mi to pojąć a oficjalne forum leży..
Dzięki

phpion
Nie widzisz różnic między tymi kodami? W pierwszym jako odpowiedź wysyłany jest wyrenderowany widok, w drugim natomiast wykonywane jest żądanie do kontrolera (czyli masz tutaj cały szablon). Zaadoptuj drugi przykład, a osiągniesz to co chcesz.
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.