外部依存関係 (javascript/css) を使用して実際の html サイトをレンダリングすると、
$app->render("./somewhere/index.html");
また
echo "<html>...</html>";
何らかの理由で、スリムは依存関係のパスを解決できないため、サイトを正しくロードできません。回避策は $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
|-- ...
|-- ...
index.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();
?>
/templates/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>
/templates/dependency.js:
function func_test() {
alert("Test");
}
1.) 成功: /templates/index.html に直接アクセスします。(つまり、127.0.0.1/templates/index.html と入力します)。[ここをクリック] をクリックすると、メッセージ ボックスが開きます。
2.) 失敗: Slim から index.php ファイルにアクセスします (注: Web サーバーで mod_rewrite を有効にしていないため、index.php/.../ を URI として使用しています。つまり 127.0.0.1/index.php/ です)。 testid)。HTML サイトは正しく読み込まれますが、[ここをクリック] をクリックしても何も起こりません。
私はすでに試しました:src="../dependency.js"、src="../templates/dependency.js"のさまざまなバリアント、index.htmlをphpファイルに変更し、src="$webroot/templates/dependencyを使用.js" - しかし、何も機能しませんでした。これを修正する方法はありますか?