Перейти к содержимому


Партнерская программа Kredov

Выводит код не там где надо (Smarty)

#1 middle

middle
  • Пользователь
  • 1 сообщений
  • Репутация: 0
0

Отправлено 29 Июнь 2015 - 17:05

Индексный файл:
require_once ROOT.'/core/db.class.php';
require_once ROOT.'/lib/Smarty.class.php';
    $mysqli = db::getObject(); //  соединение с БД
    $smarty = new Smarty();
    $option = "index";
if(isset($_GET['option'])) {
            $tmp_name = $_GET['option'];
            $opt = $_GET['option'];
            
$path = ROOT.'/core/'.$opt.".class.php";
if(file_exists($path)) {
require_once $path;
if(class_exists($opt)) {
$option = $_GET['option'];
}
            } else {
                echo "Ошибка подключения файла класса";   
            }
        } else {
            $tmp_name = "main";
            require_once ROOT."/core/".$option.".class.php";
        }
    $view = new $option();
 
    $smarty->assign("tmp_name", $tmp_name);
    $view->getContent();
    $smarty->display("index.tpl");
Класс:

class Index {
    public function getContent() {
        global $mysqli;
        $smarty = new Smarty();
        $res = $mysqli->query("SELECT * FROM pages ORDER BY id DESC");
        
        
        if ($res->num_rows > 0) {
            for ($i=0; $i<$res->num_rows; $i++) {
                $row[] = $mysqli->assoc($res);
            }
            $smarty->assign("row", $row);
        }
    }
}
 
Основной шаблон - index.tpl, в нем подключен шаблон main.tpl таким образом: {include file="$tmp_name.tpl"}.
Массив формирует правильно, а вот выводит его не в месте где подключен шаблон main.tpl, а перед <html> тегом в самом начале страницы (и то только если в классе Index снизу добавить строку $smarty->display("main.tpl")). 
Получается что данные класса не доходят до индексного файла.
P.S> Тот же код без класса (просто функция) все выводит нормально.
Подскажите как можно решить проблему?

 

 

Сообщение отредактировал middle: 29 Июнь 2015 - 17:06

  • 0


Оформление форума – IPBSkins.ru