3

新しい 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 を取得しています)。

4

2 に答える 2

0

解決策を見つけました。「index.php」スクリプトだけでなく、「public」フォルダーに「web」フォルダー全体を「protected」フォルダー (実際にはすべてのアセットとスクリプトが配置されていた場所) から移動しました。

于 2015-10-16T23:27:12.733 に答える