Я пытаюсь отобразить шаблон с динамическим содержимым, используя этот код:
function render($content, $template = 'main') {
$base = Base::instance();
$base->set('content', "ex1/views/$content.htm");
return \Template::instance()->render("../templates/$template.htm");
}
Маршрут
/ = thisfolder\ex1\controllers\Controller
Контроллер
<?php
namespace thisfolder\ex1\controllers;
class Controller extends \Controller {
function get() {
render('index');
}
}
В моем конфиге пользовательский интерфейс установлен на UI=app/thisfolder/
.
Stucture
index.php
| app
| thisfolder
| ex1
| controllers
controller.php
| models
| views
index.htm
| templates
main.htm
В моем шаблоне main.htm у меня настроена базовая страница с навигационной панелью и нижним колонтитулом, которые должны отображать вызываемый контент между всеми, используя <include href="{{ @content }}" />
Template :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Testing</title>
<link rel="icon" href="img/favicon.ico">
<!-- CSS/JS FILES -->
<link rel="stylesheet" type="text/css" href="/assets/css/uikit.min.css">
<link rel="stylesheet" type="text/css" href="/assets/css/custom.css">
<script src="/assets/js/uikit.min.js"></script>
<script src="/assets/js/uikit-icons.min.js"></script>
</head>
<body>
<div class="uk-offcanvas-content">
<!--HEADER-->
<header style="background-color: #fff; border-bottom: 1px solid #f2f2f2" data-uk-sticky="show-on-up: true; animation: uk-animation-slide-top">
<div class="uk-container">
<nav id="navbar" data-uk-navbar="mode: click;">
<div class="uk-navbar-center">
<a class="uk-navbar-item uk-logo" href="#">Testing</a>
</div>
</nav>
</div>
</header>
<include href="{{ @content }}" />
<footer class="uk-section uk-section-small" style="margin-bottom: 60px">
<div class="uk-container">
<p class="uk-text-small uk-text-center">Built with <a href="http://getuikit.com" title="Visit the UIkit 3 site" target="_blank" data-uk-tooltip><span data-uk-icon="uikit"></span></a> & <a href="https://fatfreeframework.com" title="Visit the F3 Site" target="_blank" data-uk-tooltip>F3</a> </p>
</div>
</footer>
<!--/FOOTER-->
<!-- BOTTOM BAR -->
<div class="uk-section uk-section-xsmall uk-section-default uk-position-bottom uk-position-fixed" style="border-top: 1px solid #f2f2f2">
<div class="uk-container uk-container-small uk-text-small">
<div class="uk-grid" data-uk-grid>
<div class="uk-width-expand">
<a href="#" class="uk-link-reset">
<span data-uk-icon="icon: arrow-right"></span>
<span class="uk-visible@s">Testing | <small>Page Rendered in {{ @loadtime }} seconds.</small></span>
</a>
</div>
</div>
</div>
</div>
<!-- /BOTTOM BAR -->
</div>
</body>
</html>
Проблема в том, что когда я пытаюсь загрузить страницу с помощью своего браузера, я получаю полностью пустую страницу. Шаблон не загружается и содержимое не загружается.
Если, однако, я изменю имя содержимого на что-либо, кроме «index», шаблон загружается нормально, но содержимое отображается с ошибкой:
Невозможно открыть ex1 / views / indexd.htm
Итак, из того, что я могу сказать, путь правильный, он только "работает", если я указываю $content
на файл, который не существует в моей папке представлений .
Почему мои страницы не отображаются должным образом, и как я могу это исправить?