【问题标题】:Loading core scripts such as jQuery in Yii 2在 Yii 2 中加载 jQuery 等核心脚本
【发布时间】:2015-01-20 13:20:45
【问题描述】:

我一直在努力弄清楚如何在 Yii 2 中加载 jQuery 或其他 CORE 脚本。

Yii 1 中似乎是这样的:

<?php Yii::app()->clientScript->registerCoreScript("jquery"); ?>

在 Yii 2 中,$app 是 Yii 的一个属性,而不是一个方法,所以上面的自然是行不通的,而是改成:

<?php Yii::$app->clientScript->registerCoreScript("jquery"); ?>

产生这个错误:

Getting unknown property: yii\web\Application::clientScript

我找不到关于 Yii 2 加载核心脚本的任何文档,所以我尝试了以下方法:

<?php $this->registerJsFile(Yii::$app->request->baseUrl . '/js/jquery.min.js', array('position' => $this::POS_HEAD), 'jquery'); ?>

虽然这会在头部加载 jQuery,但 Yii 也会在需要时加载第二个版本的 jQuery,因此会导致冲突错误。

另外,我不想使用 Yii 的 jQuery 实现,我更愿意维护自己的,因此这就是我这样做的原因。

如何在 Yii 需要时加载 jQuery 和其他核心文件而不加载它们的重复副本?

【问题讨论】:

标签: php jquery yii yii2


【解决方案1】:

您可以像这样从加载中删除核心 jQuery:

config/web.php

'assetManager' => [
    'bundles' => [
        // you can override AssetBundle configs here       
         'yii\web\JqueryAsset' => [
            'sourcePath' => null,
            'js' => [] 
        ],        
    ],
],

【讨论】:

  • 这是唯一的方法吗?和 Yii 1 没有什么相似之处?
【解决方案2】:

要禁用Yii2的默认资产可以参考这个问题:

Yii2 disable Bootstrap Js, JQuery and CSS

反正Yii2的资产管理方式和Yii 1.x.x不一样。首先你需要创建一个AssetBundle。作为官方指南示例,在 ``:

中创建如下资产包
namespace app\assets\YourAssetBundleName;
use yii\web\AssetBundle;

class YourAssetBundleName extends AssetBundle 
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [ 
    'path/file.css',//or files 
]; 
public $js=[
     'path/file.js' //or files
];

//if this asset depends on other assets you may populate below array
public $depends = [
];
}

然后,将它们发布到您的视图中:

use app\assets\YourAssetBundleName;
YourAssetBundleName::register($this);

其中$this 指的是当前视图对象。


另一方面,如果您只需要将JS 文件注册到视图中,您可以使用:

$this->registerJsFile('path/to/file.js');

yii\web\View::registerJsFile()

如果您只需要将CSS 文件注册到视图中,您可以使用:

$this->registerCssFile('path/to/file.css');

yii\web\View::registerCssFile()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2011-03-11
    • 2014-03-21
    • 1970-01-01
    相关资源
    最近更新 更多