如何在同一个应用程序中使用 yii2-bootstrap4 扩展和 bootstrap 3

how to use yii2-bootstrap4 extension with bootstrap 3 in the same app

我已经尝试安装 yii2-bootstrap4 但是我得到了这个作曲家错误

Your requirements could not be resolved to an installable set of packages.

 Problem 1
- Installation request for yiisoft/yii2-bootstrap4 ^1.0@dev -> satisfiable by yiisoft/yii2-bootstrap4[1.0.x-dev].
- Conclusion: don't install bower-asset/bootstrap v3.3.7
- yiisoft/yii2-bootstrap4 1.0.x-dev requires bower-asset/bootstrap ~4.0.0 -> satisfiable by bower-asset/bootstrap[v4.0.0, v4.0.0-beta.3, v4.0.0-beta1, v4.0.0-alpha.6, v4.0.0-alpha.5, v4.0.0-alpha.4, v4.0.0-alpha.3, v4.0.0-alpha.2, v4.0.0-alpha1].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-beta.3].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-beta1].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-alpha.6].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-alpha.5].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-alpha.4].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-alpha.3].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-alpha.2].
- Can only install one of: bower-asset/bootstrap[v3.3.7, v4.0.0-alpha1].
- Installation request for bower-asset/bootstrap (locked at v3.3.7) -> satisfiable by bower-asset/bootstrap[v3.3.7].

Installation failed, reverting ./composer.json to its original content

我希望能够在同一个应用程序中使用 bootstrap3 和 4,我也尝试了此 issue "prefer-stable": true, 中描述的方法,但也没有用。 那么我到底应该怎么做,如何将 bootstrap:~3.0 和 bootstrap:~4.0 与官方 yii2-bootstrap 包一起使用

您可以尝试以这种方式覆盖一些要求:

"minimum-stability": "dev",
"prefer-stable": true,
"require": {
    "php": ">=5.4.0",
    "yiisoft/yii2": "~2.0.14",
    "yiisoft/yii2-bootstrap": "~2.0.8",
    "yiisoft/yii2-bootstrap4": "1.0.x-dev",
    "bower-asset/bootstrap": "3.3.7 as 4.1.3",
    "npm-asset/bootstrap": "~4.1.3"
},

这将从 bower 安装 bootstrap 3.3.7,从 npm 安装 bootstrap 4.1.3。您需要更新 bootstrap4 个资产包的路径:

'components' => [
    'assetManager' => [
        'bundles' => [
            'yii\bootstrap4\BootstrapAsset' => [
                'sourcePath' => '@npm/bootstrap/dist'
            ],
            'yii\bootstrap4\BootstrapPluginAsset' => [
                'sourcePath' => '@npm/bootstrap/dist'
            ]
        ]
    ]
]

请注意,yii2-bootstrap4 尚未准备好使用,甚至没有 alpha/beta 版本,因此预计会出现许多其他问题。

很多关于如何在 Yii2 中使用 Bootstrap 4 的解决方案。甚至 Yii2 团队也为此创建了一个 extension。但是因为,我不喜欢太多的配置。这就是我所做的。在 AppAsset.php 中,删除 yii\bootstrap\BootstrapAsset 并自定义。我会建议,您坚持使用原始文件名和类名。

// AppAsset.php
public $depends = [
    'yii\web\YiiAsset',
    //'yii\bootstrap\BootstrapAsset',  // Remove this
    'app\assets\BootstrapAsset',       // Add this
];

然后,我在 assets 文件夹中创建了一个 BootstrapAsset.php 文件。从 yii\bootstrap\BootstrapAsset 复制代码。然后更改了部分代码。没有 NPM,没有 Bower。

namespace app\assets;

use yii\web\AssetBundle;

class BootstrapAsset extends AssetBundle
{
  public $basePath = '@webroot';
  public $baseUrl = '@web';
  public $css = [
    'vendor/bootstrap/css/bootstrap.min.css'
  ];
  public $js = [
    'vendor/bootstrap/js/bootstrap.min.js',
    'vendor/popper.js/umd/popper.min.js'
  ];
}