Bre*_*ett 6 php jquery yii yii2
我一直在努力弄清楚如何加载jQuery
或其他CORE脚本Yii 2
.
在Yii 1
它看来这是方式:
<?php Yii::app()->clientScript->registerCoreScript("jquery"); ?>
Run Code Online (Sandbox Code Playgroud)
在Yii 2中,$ app是Yii的属性,而不是方法,所以上面自然不起作用,但将其更改为:
<?php Yii::$app->clientScript->registerCoreScript("jquery"); ?>
Run Code Online (Sandbox Code Playgroud)
产生此错误:
Getting unknown property: yii\web\Application::clientScript
Run Code Online (Sandbox Code Playgroud)
我找不到关于加载核心脚本的Yii 2的任何文档,所以我尝试了以下内容:
<?php $this->registerJsFile(Yii::$app->request->baseUrl . '/js/jquery.min.js', array('position' => $this::POS_HEAD), 'jquery'); ?>
Run Code Online (Sandbox Code Playgroud)
虽然这会在头部加载jQuery,但Yii也会在需要时加载第二个版本的jQuery ,从而导致冲突错误.
另外,我不想使用Yii的jQuery实现,我宁愿保持自己的,因此这就是我这样做的原因.
如何在没有Yii的情况下加载jQuery和其他核心文件,并在需要时加载它们的副本?
要禁用Yii2
默认资产,您可以参考以下问题:
无论如何,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 = [
];
}
Run Code Online (Sandbox Code Playgroud)
然后,将它们发布在您的视图上:
use app\assets\YourAssetBundleName;
YourAssetBundleName::register($this);
Run Code Online (Sandbox Code Playgroud)
其中$this
指的是当前视图对象.
另一方面,如果您只需要将JS
文件注册到视图中,您可以使用:
$this->registerJsFile('path/to/file.js');
Run Code Online (Sandbox Code Playgroud)
如果您只需要将CSS
文件注册到视图中,您可以使用:
$this->registerCssFile('path/to/file.css');
Run Code Online (Sandbox Code Playgroud)