引用错误路径的YIi2-Gii扩展资产文件夹别名 [英] Yii2 - Gii extension assets folder alias referencing to a wrong path

查看:0
本文介绍了引用错误路径的YIi2-Gii扩展资产文件夹别名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正试着从一本书(用YI2和PHP开发Web应用程序)中学习YII 2。在此过程中,它指示我安装Gii并使用它创建CRUD文件。

当我使用以下命令安装时:

php composer.phar require --prefer-dist "yiisoft/yii2-gii:*"

我有以下错误:

无效参数-yi iaseInvalid参数异常 要发布的文件或目录不存在:/var/projectsRoot/crmapp/src/vendor/yiisoft/yii2/gii/assets

我的引导代码:

//Define Yii debug mode
define (YII_DEBUG, true);

//Including composer autoloader
require (__DIR__ . '/../vendor/autoload.php');

//Including Yii framework
require (__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

//debugging for PHP
ini_set('display_errors', true);

//Getting Configuration
$config = require(__DIR__ . '/../config/web.php');

//Include and launch application
(new yiiwebApplication($config))->run();

配置文件:

return [
    'id' => 'crmapp',
    'basePath' => realpath(__DIR__ . '/../'),
    'components' => [
        'request' => [
            'cookieValidationKey' => 'your secret key here'
        ],
        'urlManager' => [
            'enablePrettyUrl' => true,
            'showScriptName' => false
        ],
        'db' => require(__DIR__ . '/db.php')
    ],
    'modules' => [
        'gii' => [
            'class' => 'yiigiiModule',
            'allowedIPs' => ['192.168.33.1']
        ]
    ],
    'extensions' => [
        require (__DIR__ . '/../vendor/yiisoft/extensions.php')
    ]
];

扩展名文件:

$vendorDir = dirname(__DIR__);

return array (
  'yiisoft/yii2-bootstrap' => 
  array (
    'name' => 'yiisoft/yii2-bootstrap',
    'version' => '2.0.5.0',
    'alias' => 
    array (
      '@yii/bootstrap' => $vendorDir . '/yiisoft/yii2-bootstrap',
    ),
  ),
  'yiisoft/yii2-gii' => 
  array (
    'name' => 'yiisoft/yii2-gii',
    'version' => '2.0.4.0',
    'alias' => 
    array (
      '@yii/gii' => $vendorDir . '/yiisoft/yii2-gii',
    ),
  ),
);

我稍微深入了解了一下。似乎问题出在资产文件夹的别名上。

在GiiAsset.php文件中,有这样的码块:

...
class GiiAsset extends AssetBundle
{
    public $sourcePath = '@yii/gii/assets';
...

返回

/var/projectsRoot/crmapp/src/vendor/yiisoft/yii2/gii/assets

但正常情况下应返回

/var/projectsRoot/crmapp/src/vendor/yiisoft/gii/assets

所以它在路径中添加了不必要的yi 2。

我试图更改extsions.php文件中的$SourcePath,但更改此处的值不会以任何方式影响结果。

有什么想法吗?

--更新--

在我摆弄东西的时候,我尝试定义别名以强制使用正确的值,如下所示:

Yii::setAlias('@yii/gii', $vendorDir . '/yiisoft/yii2-gii');

当我尝试使用此设置运行应用程序时,收到以下错误:

要发布的文件或目录不存在:/var/projectsRoot/crmapp/src/vendor/bower/bootstrap/dist

当我将别名定义更改为:

Yii::setAlias('@yii/gii', $vendorDir . '/yiisoft/yii2-gi');

我收到以下错误:

要发布的文件或目录不存在:/var/projectsRoot/crmapp/src/vendor/yiisoft/yii2-gi

我对这种行为很困惑。这是什么原因造成的?

推荐答案

我最终删除了供应商文件夹和Composer.json文件,并使用以下内容重新创建了它:

{
    "require": {
        "codeception/codeception": "*",
        "fzaninotto/faker": "*",
        "yiisoft/yii2": "*",
        "yiisoft/yii2-gii": "*"
    }
}

当我启动Gii时,它再次抛出以下异常:

要发布的文件或目录不存在: /var/projectsRoot/crmapp/src/vendor/bower/jquery/dist

我将供应商/BOWER-ASSET文件夹重命名为供应商/BOWER,现在可以使用了。

我之前可能在没有注意到的情况下搞砸了一些东西,但我不确定为什么它要寻找Bower,而不是Bower-Asset。将Bower-Asset更名为Bower似乎可以解决这个问题。

更新

多亏了最初的YII论坛中的Jacmoe,它终于解决了。

为了自动创建Bower文件夹,而不是Bower-Asset,这两行似乎确实需要出现在Composer.json中。

"extra": {
    "asset-installer-paths": {
        "npm-asset-library": "vendor/npm",
        "bower-asset-library": "vendor/bower"
    }
}

原始对话可在here:

找到 这些行是在安装基本应用程序模板时自动创建的,但在安装基本代码库时,您需要手动编写它们。

这篇关于引用错误路径的YIi2-Gii扩展资产文件夹别名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆