如何在 Slim Framework 路由中渲染前端页面?
How to render front-end pages in Slim Framework route?
我的文件夹中安装了 Slim,我想知道是否可以从 Slim 路径呈现完整的 html/css/js 页面。
假设这是控制路由的文件:
rControl.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
$app = new \Slim\App;
$app->get('/myroute', function (Request $request, Response $response){
/* I want to render the page when enter in this route*/
return $response;
});
$app->run();
并假设我有一个自定义 html 文件,格式为 css:
myTemplate.html
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>My title </title>
</head>
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.min.css">
<script src="jquery-2.2.4.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/engine.js"></script>
<body>
<h1> Some text </h1>
<p> example text here </p>
<div> hi! more content... </div>
</body>
</html>
问题是:当用户转到路由 时,如何显示 myTemplate.html 页面的内容" /我的路线?
最简单的方法是使用PHP-View。
<?php
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\PhpRenderer;
require '../vendor/autoload.php';
$app = new \Slim\App;
$container = $app->getContainer();
$container['renderer'] = new PhpRenderer("./templates");
$app->get('/myroute', function (Request $request, Response $response){
return $this->renderer->render($response, "/myTemplate.html");
});
$app->run();
传统上,我们使用模板的 .phtml
扩展名来表示它们可以包含 PHP 代码。您可以通过数组将数据作为第三个参数传递给模板文件 render()
.
我的文件夹中安装了 Slim,我想知道是否可以从 Slim 路径呈现完整的 html/css/js 页面。
假设这是控制路由的文件:
rControl.php
<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
require '../vendor/autoload.php';
$app = new \Slim\App;
$app->get('/myroute', function (Request $request, Response $response){
/* I want to render the page when enter in this route*/
return $response;
});
$app->run();
并假设我有一个自定义 html 文件,格式为 css:
myTemplate.html
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>My title </title>
</head>
<link rel="stylesheet" href="css/bootstrap-theme.min.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.min.css">
<script src="jquery-2.2.4.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/engine.js"></script>
<body>
<h1> Some text </h1>
<p> example text here </p>
<div> hi! more content... </div>
</body>
</html>
问题是:当用户转到路由 时,如何显示 myTemplate.html 页面的内容" /我的路线?
最简单的方法是使用PHP-View。
<?php
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Http\Message\ResponseInterface as Response;
use Slim\Views\PhpRenderer;
require '../vendor/autoload.php';
$app = new \Slim\App;
$container = $app->getContainer();
$container['renderer'] = new PhpRenderer("./templates");
$app->get('/myroute', function (Request $request, Response $response){
return $this->renderer->render($response, "/myTemplate.html");
});
$app->run();
传统上,我们使用模板的 .phtml
扩展名来表示它们可以包含 PHP 代码。您可以通过数组将数据作为第三个参数传递给模板文件 render()
.