chfast
12.10.2003, 21:10:03
Mam stronę w oparciu o szablony (Smarty). Taki problem mnie spotkał: Jeśli na stronie pojawia się błąd php to zazwyczaj dzieje się to zanim zostanie wyświetlony szablon. Co za tym idzie błąd będzie na samy początku wygenerowanego kodu XHTML. Jako że znaczniki w XHTML muszą być zgodne z XML 1.0 to ten błąd wszystko psuje, bo całość kodu nie jest zamknięta w jeden znacznik. Na takiej stronie pojawia się błąd XML i w ogóle się nie wyświetla. Jedyną radą jest umieszczenie błędu php w znacznik <pre>. Macie jakieś inne pomysły?
DeyV
12.10.2003, 23:27:07
rozwiązanie jest bardzo proste.
Na samym począku strony php uruchamiasz [manual:b44b08b903]ob_start ()[/manual:b44b08b903]
Powoduje to, że wszystko, co by sostało wyświetlone, trafi zamiast na ekran, do bufora.
Wykonujesz cały kod php, a na końcu - juz przed wywołaniem pokazania wyników w smarty, czyli $smarty->display( ... );
do jakiejś zmiannej zapisujesz cały dotychczasowy output, np. tak:
[php:1:b44b08b903]<?php
$__ob_erors = @ob_get_contents();
/// i zatrzymujesz zapisywanie outputu do bufora
while (@ob_end_clean());
?>[/php:1:b44b08b903]
teraz zmianną z ewentulanym outputem z błędami (string) możesz assignować do smarty i dalej obrabiać.
Wankster
15.10.2003, 16:07:36
Albo wyłącz raportowanie błędów