Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改jqueryaset';特定页面上的jQuery版本_Php_Jquery_Yii2 - Fatal编程技术网

Php 更改jqueryaset';特定页面上的jQuery版本

Php 更改jqueryaset';特定页面上的jQuery版本,php,jquery,yii2,Php,Jquery,Yii2,我有一个资产包(AppAsset),它在我的主布局(main.php)中注册,用于整个应用程序的公共资产: class AppAsset extends AssetBundle { public $basePath = '@webroot'; public $baseUrl = '@web'; public $css = [ 'css/style.css', ]; public $depends = [ 'yii\web\J

我有一个资产包(AppAsset),它在我的主布局(main.php)中注册,用于整个应用程序的公共资产:

class AppAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/style.css',
    ];
    public $depends = [
        'yii\web\JqueryAsset',
        'yii\bootstrap\BootstrapAsset',
    ];
}
但在某个特定页面(不是整个应用程序!)上,我需要将jquery更改为较低版本,并连接其他资产。我正在注册另一个资产包,它依赖于所需视图文件中的主资产包AppAsset:

class GalleryAsset extends AssetBundle
{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [ 
        'css/gamma/style.css',
        'css/gamma/noJS.css',
    ];
    public $js = [
        'js/gamma/modernizr.custom.70736.js',
        'js/gamma/jquery.masonry.min.js',
        'js/gamma/jquery.history.js',
        'js/gamma/js-url.min.js',
        'js/gamma/jquerypp.custom.js',
        'js/gamma/gamma.js',
    ];

    public $depends = [
        'app\assets\AppAsset',
    ];
}
问题是如何在子资产包GalleryAsset或某个视图文件(页面)中更改Jquery的版本


谢谢你们,上帝保佑你们

您可以在中阅读如何自定义资产捆绑包

但通过应用程序配置进行定制在这里并不合适,因为此时请求的路由未知

您可以在运行时使用组件更改必要的资产包:

use Yii;

...

Yii::$app->assetManager->bundles['yii\web\JqueryAsset'] = [
    'sourcePath' => null,
    'js' => ['jquery.js' => 'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js'],
];
请确保在注册与该页面相关的资产包之前放置此代码

在这种情况下,依赖于
yii\web\jqueryaset
的所有资产将导致注册旧版本


此外,我还建议您另外检查使用过的插件与此版本的兼容性(虽然没有那么旧)。

谢谢。我像你说的那样做了:
classjqueryaset扩展了AssetBundle{public$sourcePath=null;public$js=['jquery.js'=>'https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.js',     ];  }
现在我的页面上有两个jquery:第一个和第二个yii\web\jqueryaset的版本,它在加载所有脚本后会破坏我的代码。现在我该如何解决这个问题?我的回答对你有帮助吗?