Yii 2 中的应用程序文件重组

Application file re-organization in Yii 2

我已经建立了新的 Yii2 项目。现在我想reorganize folder structure在两个文件夹"public"和"app"(实际上代表受保护的文件)。

框架中的所有代码都在 "app" 文件夹中。在 "public" 文件夹中,我从调用应用程序的地方只有一个名为 "index.php" 的脚本。那里的代码如下所示(我只修改了原始 "index.php" 的路径)。

app/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来自错误的地方)。

如果您想更改资产目录,您需要在配置文件中配置 AssetsManager 组件 web.php:

'components' => [
    ...
    'assetManager' => [
        'basePath' => 'my/path/to/assets',
    ],
    ...
],

我找到了解决方案。在 "public" 文件夹中,我没有只包含 "index.php" 脚本,而是从 "protected" 文件夹中移动了完整的 "web" 文件夹(实际上所有资产和脚本都位于该文件夹中) .