如果我使用外部依赖项(javascript/css)渲染一个实际的 html 站点
$app->render("./somewhere/index.html");
或者
echo "<html>...</html>";
由于某种原因,slim 无法解析依赖路径 - 因此无法正确加载该站点。一种解决方法是 $app->redirect("./somewhere/index.html"); 而不是 $app->render("./somewhere/index.html"); - 但浏览器地址栏中的 URL 路径也会发生变化。我想避免这种情况,因为我只想为从 URI 接收到的 REST 请求显示一个 HTML 模板 - 所以没有必要重定向到 html 文档并丢失 REST 参数。
我的问题的一个sscce:
目录结构:
- index.php
+ templates
|-- index.html
|-- dependency.js
+ Slim
|-- ...
|-- ...
索引.php:
<?php
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new Slim\Slim();
$app->get('/:id', function ($id) use ($app) {
$app->render('index.html');
});
$app->run();
?>
/模板/index.html:
<html>
<head>
<title>SSCCE</title>
<script id="someid" type="text/javascript" src="dependency.js"></script>
</head>
<body>
<a href="javascript:func_test()">Click here</a>
</body>
</html>
/模板/dependency.js:
function func_test() {
alert("Test");
}
1.) 成功:直接访问 /templates/index.html。(即通过输入 127.0.0.1/templates/index.html)。单击“单击此处”会打开一个消息框。
2.) 失败:从 Slim 访问 index.php 文件(注意:我没有在网络服务器上激活 mod_rewrite - 所以我使用 index.php/.../ 作为 URI 即 127.0.0.1/index.php/睾丸)。html 站点加载正确,但如果我单击“单击此处”,则没有任何反应。
我已经尝试过:src="../dependency.js"、src="../templates/dependency.js" 的不同变体,将 index.html 更改为 php 文件并使用 src="$webroot/templates/dependency .js” - 但没有任何效果。知道如何解决这个问题吗?