在Yii 2中

时间:2015-10-15 21:40:44

标签: yii yii2 organization application-structure

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

框架中的所有代码都在" app"夹。在"公共"文件夹我只有一个名为" index.php"从我调用应用程序的地方。那里的代码如下所示(我只修改了原来的路径" 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中我遇到了以下问题:

enter image description here

所以似乎所有路径都指向正确的文件(我已经检查过),但我仍然遇到错误。那么我在这里失踪了什么?为什么basePath仍然可以识别&#34; public&#34;文件夹?

更新1:

在关注@marche的评论后,将以下代码添加到配置文件中:

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

我没有再次出现屏幕错误,但现在内容加载时没有任何CSS样式且没有JS文件(他们仍在从错误的位置拉取URL)。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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