沐风待雨 2017-02-10 22:14:32 9871次浏览 6条评论 0 1 0

在frontend/assets/AppAsset.php

代码示例

namespace frontend\assets;

use yii\web\AssetBundle;

/**
 * Main frontend application asset bundle.
 */
class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/site.css',
    ];
    public $js = [
        'js/main.js',
    ];
    public $depends = [
        'yii\web\YiiAsset',
        'yii\bootstrap\BootstrapAsset',//注意这里必须要有
        'rmrevin\yii\fontawesome\AssetBundle',
    ];
}

在vendor/yiisoft/yii2-bootstrap/BootstrapAsset.php 文件里

namespace yii\bootstrap;

use yii\web\AssetBundle;

/**
 * Asset bundle for the Twitter bootstrap css files.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class BootstrapAsset extends AssetBundle
{
    public $sourcePath = '@bower/bootstrap/dist';
    public $css = [
        'css/bootstrap.css',
    ];
    //下面是增加的代码
    public $js = [
        'js/bootstrap.js',
    ];
}

OK了

觉得很赞
  • 评论于 2017-02-16 00:37 举报

    此方法如果composer把资源全部更新,文件会被覆盖,所以可以在frontend/assets文件下建了个BootstrapChildAsset.php

    <?php
    
    namespace frontend\assets;
    
    /**
     * Asset bundle for the Twitter bootstrap css files.
     *
     * @author Qiang Xue <qiang.xue@gmail.com>
     * @since 2.0
     */
    class BootstrapChildAsset extends \yii\bootstrap\BootstrapAsset
    {
     
        public $js = [
            'js/bootstrap.js',
        ];
    }
    

    这样就好了

  • 评论于 2017-02-16 16:00 举报

    'rmrevin\yii\fontawesome\AssetBundle',
    问下这句是什么功能?
    'js/bootstrap.js',
    我现在都是在AppAsset引入,一直想不通为什么不能自动引入

    2 条回复
    评论于 2017-02-16 20:50 回复

    'rmrevin\yii\fontawesome\AssetBundle', 这句引入了css文件

    <link href="/assets/ee88644/css/font-awesome.min.css" rel="stylesheet">  
    
    评论于 2017-02-16 20:53 回复

    bootstrap.js没人默认被BootstrapAsset引入的原因很简单
    下面是其源代码

    namespace yii\bootstrap;
    
    use yii\web\AssetBundle;
    
    /**
     * Asset bundle for the Twitter bootstrap css files.
     *
     * @author Qiang Xue <qiang.xue@gmail.com>
     * @since 2.0
     */
    class BootstrapAsset extends AssetBundle
    {
        public $sourcePath = '@bower/bootstrap/dist';
        public $css = [
            'css/bootstrap.css',
        ];
    }
    

    这里能看到代码中默认只引入css文件。O(∩_∩)O

  • 评论于 2017-11-17 13:42 举报

    感谢分享,解决了我的问题

    1 条回复
    评论于 2018-01-06 21:51 回复

    my pleasure ,O(∩_∩)O

  • 评论于 2018-05-08 16:55 举报

    Yii2 引入bootstrap.js

    1. 框架默认的是BootstrapAsset只引入bootstrap的css样式,BootstrapPluginAsset可以引入jquery.js加bootstrap.js
    2. 强烈不建议修改vendor目录下面的文件
    3. 可以在组件(widgets)中,通过BootstrapPluginAsset::register($this->view)引入.或者直接在views的html模板中通过引入
    4. 重复引入的js或css会被自动合并
    觉得很赞
  • 评论于 2018-07-27 10:20 举报

    没有加入版本的概念

  • 评论于 2020-01-10 17:57 举报

    我认为的最佳方法: AppAsset.php 文件中引用yii\bootstrap\BootstrapPluginAsset

    `
    use yii\bootstrap\BootstrapPluginAsset;

    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [

    'statics/css/site.css',
    

    ];
    public $js = [

    'statics/js/site.js',
    

    ];
    public $depends = [

    'yii\web\YiiAsset',
    'yii\bootstrap\BootstrapAsset',
    BootstrapPluginAsset::class,
    

    ];
    `

    觉得很赞
您需要登录后才可以评论。登录 | 立即注册