Загрузка основных сценариев, таких как jQuery в Yii 2
Мне было трудно понять, как загрузить jQuery или другие основные скрипты в Yii 2.
В Yii 1 казалось, что это был путь:
<?php Yii::app()->clientScript->registerCoreScript("jquery"); ?>
В Yii 2 $app является свойством Yii, а не методом, поэтому вышеизложенное, естественно, не работает, но меняет его на:
<?php Yii::$app->clientScript->registerCoreScript("jquery"); ?>
Выдает такую ошибку:
Getting unknown property: yiiwebApplication::clientScript
Я не смог найти никакой документации для Yii 2 о загрузке основных сценариев, поэтому я попытался сделать следующее:
<?php $this->registerJsFile(Yii::$app->request->baseUrl . '/js/jquery.min.js', array('position' => $this::POS_HEAD), 'jquery'); ?>
Пока это загружает jQuery в голову, второй версия jQuery также загружается Yii при необходимости и, следовательно, вызывает конфликтные ошибки.
Кроме того, я не хочу использовать реализацию jQuery в Yii, я бы предпочел сохранить свою собственную, и поэтому я делаю это.
Как я могу загрузить jQuery и другие файлы ядра, не загружая их дубликаты в Yii, когда они ему нужны?
2 ответов:
Чтобы отключить стандартные активы
Yii2, Вы можете обратиться к этому вопросу:Yii2 отключить Bootstrap Js, JQuery и 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');
Вы можете удалить ядро jQuery из загрузки следующим образом:
Config / web.php
'assetManager' => [ 'bundles' => [ // you can override AssetBundle configs here 'yii\web\JqueryAsset' => [ 'sourcePath' => null, 'js' => [] ], ], ],
Comments