|
|
|
| У меня вызываеться класс Core, который extends Tempalte(класс шаблонизатоор).
<?php
class Core extends Template {
function display_template() {
$this->assign ( 'name', 'Денис' );
$this->ShowTempate ( 'main.tpl');
}
}
?>
|
Функцция ShowTempate загружает мой шаблон.
<?php
class Template {
function ShowTempate($Tmpl) {
ob_start ();
//Подключаем шаблон
include ($Tmpl);
//Получаем сгенерированный текст
//$text = ob_get_contents ();
ob_end_clean ();
return $text;
}
}
?>
|
Вот когда у меня доходит до функции display_template(), у меня выкидывает след ошибку
Notice: ob_end_clean() [ref.outcontrol]: failed to delete buffer. No buffer to delete. in (там, где лежит класс) on line (где ob_end_clean (); )
|
Подскажите в чем может быть проблама.
Заранее всем спасибо! | |
|
|
|
|
|
|
|
для: FaStY
(14.08.2008 в 11:05)
| | Зачем закомментили
<?
//$text = ob_get_contents ();
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(14.08.2008 в 11:41)
| | случайно.это я при написании. а вообще это все не закаменчено | |
|
|
|
|
|
|
|
для: FaStY
(14.08.2008 в 12:10)
| | Видимо у вас там нагромождение буферов получилось.
В принципе это предупреждение (notice), так что можно просто его подавить @ob_end_clean ();
А если эту функцию ob_end_clean(); вообще убрать, что получится? | |
|
|
|
|
|
|
|
для: Axxil
(14.08.2008 в 12:24)
| | тогда ошибка убираеться. может вообще убрать? это замедлит работу скрипта? | |
|
|
|
|
|
|
|
для: FaStY
(14.08.2008 в 12:34)
| | > тогда ошибка убираеться. может вообще убрать?
угу
> это замедлит работу скрипта?
да нет конечно :)
если у вас скрипт пишет что нечего чистить, то и не зачем тогда чистить :) | |
|
|
|
|
|
|
|
для: Axxil
(14.08.2008 в 12:38)
| | но дело в том, что когда я этот shoTempalte вызываю на из класса, а из индекса- у меня все отлично работает и не выводит ошибки.
Так если нечего чистить- получаеться и ничего в буфере нет и нет от него толка?) | |
|
|
|
|
|
|
|
для: FaStY
(14.08.2008 в 14:21)
| | покажите как вы эти методы вызываете в скрипте. | |
|
|
|
|
|
|
|
для: Axxil
(14.08.2008 в 14:26)
| |
$t = new Template ( );
$text = $t->ShowTempalte ( 'main.tpl' );
|
Вот так | |
|
|
|
|
|
|
|
для: FaStY
(14.08.2008 в 14:45)
| | Точно так?
class Core extends Template {
function display_template() {
$this->assign ( 'name', 'Денис' );
$this->ShowTempate ( 'main.tpl');
}
}
|
а вот это тогда зачем?
И этот код:
class Template {
function ShowTemplate($Tmpl) {
ob_start ();
//Подключаем шаблон
include ($Tmpl);
//Получаем сгенерированный текст
$text = ob_get_contents ();
ob_end_clean ();
return $text;
}
}
$t = new Template( );
echo $t->ShowTemplate( 'test.html' );
|
у меня без проблем выполняется. | |
|
|
|
|
|
|
|
для: Axxil
(14.08.2008 в 15:46)
| | первый код должен выводить. т.е. это то, что я хочу сделать, что бы работало:
class Core extends Template {
function display_template() {
$this->assign ( 'name', 'Денис' );
$this->ShowTempate ( 'main.tpl');
}
}
|
а это просто для теста:
$t = new Template( );
echo $t->ShowTemplate( 'test.html' );
|
| |
|
|
|
|
|
|
|
для: FaStY
(14.08.2008 в 15:54)
| | блин :)
ну и покажите код в том виде в котором вы хотите чтобы он работал. Нафига тесты тут нужны? Они и так прекрасно работают.
PS Вообще на форуме замечено две тенденции.
1. Постим сразу 1000 строк кода и просим найти ошибку
2. Постим "примеры", "тесты", "типа того, но у меня по другому" и просим найти ошибку.
Ребяты, давайте будем нормально формулировать вопросы, максимально упрощая жизнь помогающим. Глядишь, во время формулировки ответ сам придёт. | |
|
|
|
|
|
|
|
для: Axxil
(14.08.2008 в 16:20)
| | хех... проблема решена. заменил ob_end_clean (); на $text = ob_get_clean (); и все работает) | |
|
|
|