За последние 24 часа нас посетил 22691 программист и 1281 робот. Сейчас ищут 787 программистов ...

Не работает вывод страницы через loadtpl

Тема в разделе "Сделайте за меня", создана пользователем Fyntik, 16 янв 2021.

Метки:
  1. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    Здравствуйте, должен выводиться контент из базы через loadtpl, но почему-то не работает, вот собственно сам код:

    Код (Text):
    1. if (!empty($_GET['page'])) {
    2.     $page = $link->prepare("SELECT * FROM `AD_PAGES` WHERE `name` = ? LIMIT 1");
    3.  
    4.     if (!$page->execute([ $_GET['page'] ])) {
    5.         MessageSend(1, 'MySQL Error!', '');
    6.     }
    7.  
    8.     if ($page->rowCount() <= 0) {
    9.         MessageSend(1, 'Page not founded!', '');
    10.     }
    11.  
    12.     $page = $page->fetch();
    13.  
    14.     if ($page['adv'] === 0) {
    15.         $advert = '';
    16.     }
    17.  
    18.     $goods = loadTpl('/page.html', $page);
    И код page.html:

    Код (Text):
    1. </div>
    2. <div class="row">
    3.     <div class="col-md-8 col-md-offset-2">
    4.         <div class="panel panel-default">
    5.             <div class="panel-heading">
    6.                 <h3 class="panel-title text-center"><i class="icon file"></i> <?php echo $data['title']; ?></h3>
    7.             </div>
    8.             <div class="panel-body"><?php echo $data['text']; ?></div>
    9.         </div>
    10.         <a class="btn btn-success btn-block" href=""><i class="icon chevron-left"></i> Вернуться на главную страницу</a>
    11.     </div>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.824
    Симпатии:
    738
    Адрес:
    Татарстан
    1. Перед выводом в loadtpl сделайте print_r($page) данные есть?
    2) ну и саму функцию liadtpl неплохо бы увидеть.... Или думаете тут все телепаты?
     
  3. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    Код (Text):
    1. function loadTpl($file, $data = []) {
    2.     global $config;
    3.     $file = STYLE_DIR . $file;
    4.     ob_start();
    5.  
    6.     if (file_exists($file)) {
    7.         include $file;
    8.     } else {
    9.         echo 'TPL File not found!';
    10.     }
    11.  
    12.     return ob_get_clean();
    13. }
    --- Добавлено ---
    После print_r выводит:

    Код (Text):
    1. Array ( [id] => 3 [name] => 2 [title] => rules [text] =>
    2. afdspgksdgkoasgasd
    3.  
    4. [adv] => 1 )
    + выводит криво поверх шапки сайта
     
    #3 Fyntik, 16 янв 2021
    Последнее редактирование: 16 янв 2021
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Fyntik, что дальше происходит с переменной $goods?
    именно в ней теперь находится результат работы loadTpl()
     
  5. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    $goods = ob_get_clean();
     
  6. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    То есть, затираете результат работы функции loadTpl().
    А дальше?
    --- Добавлено ---
    Просто интересно, была ли попытка вывести результат, хоть и пустой :rolleyes:
     
  7. Fyntik

    Fyntik Новичок

    С нами с:
    5 июн 2020
    Сообщения:
    38
    Симпатии:
    0
    на этом всё
     
  8. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    В общем, если ещё что-то не понятно - поставьте в 19-й строке (в коде из 1-го сообщения):
    PHP:
    1. echo $goods;
    А перезапись результата работы функции loadTpl() /* $goods = ob_get_clean(); */, однако, можно убрать. Если этот оператор находится не в другом логическом блоке :)