обработчик ошибок

Slastik

Новичок
обработчик ошибок

Добрый день

у меня следующая ситуация
есть обработчик ошибок
set_error_handler("myErrorHandler");

есть плагины смарти
в плагинах есть работа с базой
если работа с базой завершилась не корректно вызываю обработчик, он в свою очередь мне шлет на мыло ошибку
а пользователю должен выводить пустую страницу с сообщением что мол работа временно приостановлена

так вот вопрос
так как я использую именно плагины, то главный шаблон уже загружен и часть данных уже отработана и выведена юзеру, и только тогда вызывается плагин, и эта ошибка где то в углу экрана допустим, смотрится глупо и нелепо

я не могу сделать просто пустую страницу с такой надписью. сделать редирект я тоже не могу
так как данные уже посланы

Есть ли какое то изящное решение этой проблемы, кроме включения буферизации вывода.

надеюсь кто то понял мой вопрос :)
 

magic

lancer
Есть решение. Поставить set_error_handler("myErrorHandler") в самом начале скрипта. До include/require.
 

Slastik

Новичок
magic
хм а смысл
проблема в том что плагины вызываются уже в загруженом шаблоне.
какая разница когда я регистрирую обработчик?
 

magic

lancer
Перечитал вопрос еще раз. Не очень понятно, что делает работа с БД в плагинах Смарти. Попробуйте что-то типа этого:
Код:
if($return = $smarty->fetch('template.tpl')){
echo $return;
}else{
// обработка ошибки
}
 

Slastik

Новичок
хм
возможно как то и можно поиграться с $smarty->fetch
спасибо
 

magic

lancer
В догонку - в Smarty FAQ этот вопрос оставлен без ответа :) На форумах смарти предлагают использовать костыль с fetch или патчить смарти. Т.е. вопрос полностью не решен.

Может стоит все-таки перенести работу с БД в скрипты.
 

Slastik

Новичок
ну там не только работа с базой
допустим открытие файла
а его может не быть
такие ошибки тоже отлавливаются
и плюс довольно не удобно перенести всю работу выше подгрузки шаблона.
тогда плагины практически бесполезными становятся
 

zerkms

TDD infected
Команда форума
Slastik
делать не display() а fetch() + echo, тогда вывод будет под контролем
 

Slastik

Новичок
ага zerkms :)
по подсказке magic к этому и пришел, правда еще не успел проверить все ли так как представляется будет :)
 
Сверху