当前位置: 首页 > 知识库问答 >
问题:

Yii2-引用错误路径的Gii扩展资源文件夹别名

黄永怡
2023-03-14

我试图从一本书中学习Yii2(使用Yii2和PHP开发Web应用程序)。它指示我安装gii并用它创建crud文件。

使用以下命令安装时:

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

我有以下错误:

无效参数–yii\base\InvalidParamException要发布的文件或目录不存在:/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 yii\web\Application($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' => 'yii\gii\Module',
            '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

因此,它向路径添加了一个不必要的yii2。

我试图更改extensions.php文件中的$Source cePath,但是在这里更改值不会以任何方式影响结果。

有什么想法吗?

当我处理事情时,我试图定义别名以强制使用正确的值;详情如下:

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

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

共有2个答案

苏硕
2023-03-14

我有类似的问题,我的应用程序基于yii2-app-先进,但从@通用分离。解决方法是在应用程序配置中添加vendorPath属性。

葛兴发
2023-03-14

我最终删除了我的供应商文件夹和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似乎可以解决此问题。

感谢来自原来的Yii论坛的Jacmoe,它终于解决了。

看来这两行诗确实需要出现在作曲家的作品中。json以自动创建bower文件夹,而不是bower资产。

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

原始对话可以在这里找到:

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

 类似资料:
  • 问题内容: 我的App Engine项目的war / WEB-INF文件夹中有一个文件。我在FAQ中读到,您可以在servlet上下文中从那里读取文件。我不知道如何形成资源的路径: 我将如何构造到该资源的路径以与File()一起使用,就像上面一样? 问题答案: 有两种方法可以做到这一点。只要扩展WAR文件(一组文件而不是一个.war文件),就可以使用以下API: http://tomcat.apa

  • 我曾多次尝试安装Kartik Grid Extension,但都因以下错误而失败: 设置未知属性:yii\bootstrap\ButtonDropdown::containerOptions 错误位于/Applications/MAMP/htdocs/business/vendor/yiisoft/yii2/base/Component中。php 第197行 我的看法是: 并在web中配置模块。p

  • 资源(Asset)代表 source 文件夹中除了文章以外的所有文件,例如图片、CSS、JS 文件等。比方说,如果你的Hexo项目中只有少量图片,那最简单的方法就是将它们放在 source/images 文件夹中。然后通过类似于 ![](/images/image.jpg) 的方法访问它们。 对于那些想要更有规律地提供图片和其他资源以及想要将他们的资源分布在各个文章上的人来说,Hexo也提供了更组

  • 我正在尝试使用相对路径在main方法中从我的资源文件夹中获取一个JSON文件。代码使用绝对路径工作,但一旦我从我的项目构建了一个jar文件,这就是我想要的。 Read调用数据库中的一个方法,该方法使用inputstream读取文件。 我得到的错误如下: 编辑(25/09):如果我使用GetResourceStream而不是getResource,我将得到以下错误:

  • 我正在创建一个javafx GUI应用程序,我的项目是一个maven配置的项目。我希望能够在我的控制器中引用我的fxml文件,如下所示: 其中,我的main.fxml文件位于src/main/resources文件夹中,而我的控制器位于src/main/java文件夹中。我该怎么做呢?我的src/main/resources文件夹在构建路径中,并且我能够从src/main/java文件夹中的类调用

  • 本文将介绍 Weex 中 uri(url) 的用法。包括使用图像、字体等资源,处理相对路径以及如何访问本地及打包的资源文件。 Schemes 本地资源 Weex SDK 提供 local scheme 来访问打包在应用程序中的资源,此 scheme 无法在 H5 环境下使用。目前,开发者可以在 image 组件和字体文件中使用本地资源。 在 iOS 中,Weex 会在 bundle resourc