Загрузка основных сценариев, таких как 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, когда они ему нужны?

844   2  

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');

Yii\web\View:: registerCssFile()

Вы можете удалить ядро jQuery из загрузки следующим образом:

Config / web.php

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

Comments

    Ничего не найдено.