Вставка вывода на страницу после выполнения документа - PullRequest
0 голосов
/ 19 января 2012

В PHP есть ситуация, когда мне нужно, чтобы страница выполнялась в основном, но в вывод этой страницы был вставлен элемент.

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

Мой код выглядит так:

//this document is part of a global functions file

function pageHeader (){

    //I'm using $GLOBALS here because it works, however I would really rather a better method if possible
    $GLOBALS['error_handler'] = new ErrorHandler(); //ErrorHandler class sets a function for set_error_handler, which gets an array of errors from the executed page

    require_once($_SERVER['DOCUMENT_ROOT'].'/sales/global/_header.php');

    //I would like the unordered list from ->displayErrorNotice() to be displayed here, but if I do that the list is empty because the list was output before the rest of the document was executed
}

function pageFooter (){

    $GLOBALS['error_handler'] ->displayErrorNotice(); //this function displays the errors as an html unordered list

    include($_SERVER['DOCUMENT_ROOT']."/sales/global/_footer.php");
}

Большинство страниц сайта содержат этот документ и используют функции pageHeader() и pageFooter(). Я пытаюсь достичь неупорядоченного списка сгенерированных PHP ошибок в HTML-списке сразу после включения _header.php. Я могу заставить список работать так, как задумано, если поместить его в нижний колонтитул (после того, как документ был выполнен), но я не хочу его там. Я думаю, что я мог бы переместить его с JS, но я думаю, что должно быть решение PHP.

UPDATE

Мне интересно, будет ли функция обратного вызова для ob_start(), которая ищет буфер по регулярному выражению, куда поместить список ошибок, а затем вставляет его, будет решением.

ОБНОВЛЕНИЕ 2 Я решил проблему, мой ответ ниже. Я приму его через 2 дня, когда мне позволят.

Ответы [ 2 ]

1 голос
/ 19 января 2012

Наконец-то все получилось.Ключ заключался в том, чтобы буферизовать выходные данные, найти в буфере заданный фрагмент HTML-кода и заменить его неупорядоченным списком.

Моя реализация выглядит так:

0 голосов
/ 19 января 2012

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

Если это правда, я не могу придумать, как это сделатьс чистым php.Он может проходить через страницу только один раз и не может сдвоиться назад.Что вы можете сделать, это создать элемент после нижнего колонтитула и переместить его, используя JavaScript, в область, где вы хотите отобразить его.Это был бы самый простой способ, которым я мог бы подумать.Вы можете легко сделать это с помощью jquery.

Я могу объяснить подробнее, нахожусь ли я на правильном пути, но я не уверен на 100%, что вы спрашиваете ...

Команда jquery, которую вы бы использовали: .appendTo ().

...