新しい Yii2 プロジェクトをセットアップしました。ここで、フォルダー構造を「パブリック」と「アプリ」(実際には保護されたファイルを表す) の 2 つのフォルダーに再編成したいと考えています。
フレームワークからのすべてのコードは、「アプリ」フォルダーに入ります。「public」フォルダーには、アプリを呼び出している場所から「index.php」という名前のスクリプトが1つだけあります。コードは次のようになります (元の「index.php」からパスのみを変更しただけです)。
アプリ/index.php
<?php
// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../app/vendor/autoload.php');
require(__DIR__ . '/../app/vendor/yiisoft/yii2/Yii.php');
$config = require(__DIR__ . '/../app/config/web.php');
(new yii\web\Application($config))->run();
?>
これと同じアプローチは、コマンドの異なる構文を取得する Yii フレームワークで機能していました。しかし、Yii 2 で次の問題が発生しました。
したがって、すべてのパスが正しいファイルを指しているように見えますが (確認しました)、それでもエラーが発生します。それで、私はここで何が欠けていますか?basePath がまだ "public" フォルダを認識しているのはなぜですか?
更新 1:
@marche からのコメントに従って、次のコードを構成ファイルに追加します。
'components' => [
...
'assetManager' => [
'basePath' => 'my/path/to/assets',
],
...
],
画面でエラーが発生しなくなりましたが、コンテンツは CSS スタイルと JS ファイルなしで読み込まれます (まだ間違った場所から URL を取得しています)。