2014-11-22 10 views
6

Ho avuto difficoltà a cercare di capire come caricare jQuery o altri script CORE in Yii 2.Caricamento di script di base come jQuery in Yii 2

In Yii 1 è sembrato che questo era il modo in cui:

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

In Yii 2, $ applicazione è una proprietà di Yii, non un metodo, in modo che il sopra, naturalmente, non funziona, ma cambiando a:

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

produce questo errore:

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

non ho potuto trovare alcuna documentazione per Yii 2 su Lo ading script nucleo, così ho provato qui sotto:

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

Mentre questo carichi jQuery in testa, una seconda versione di jQuery è caricato anche da Yii quando necessario e quindi provoca errori di conflitto.

Inoltre, non voglio utilizzare l'implementazione di jQuery di Yii, preferirei mantenere il mio e quindi è per questo che lo sto facendo.

Come posso caricare jQuery e altri file core senza Yii caricandone copie duplicate quando ne ha bisogno?

+0

è possibile trovare http://stackoverflow.com/questions/26734385/yii2-disable-bootstrap-js-jquery-and-css/26734892#26734892 e http://www.yiiframework.com/doc- 2.0/guida-struttura-assets.html utile. –

risposta

9

Per disabilitare Yii2 's beni di default è possibile fare riferimento a questa domanda:

Yii2 disable Bootstrap Js, JQuery and CSS

In ogni caso, il modo di gestione degli asset di Yii2 è diverso da Yii 1.x.x. Per prima cosa devi creare un AssetBundle. A titolo di esempio guida ufficiale, creare un pacchetto di asset come qui di seguito in ``:

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 = [ 
]; 
} 

Poi, pubblicarli sui vostri punti di vista:

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

Quali $this si riferisce all'oggetto vista corrente.


D'altra parte, se avete bisogno di registrare solo JS file in una vista, è possibile utilizzare:

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

yii\web\View::registerJsFile()

E se è necessario registrarsi solo CSS file in una vista, è possibile utilizzare:

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

yii\web\View::registerCssFile()

2

È possibile rimuovere il nucleo di jQuery caricamento in questo modo:

config/web.php

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

È l'unico modo per farlo? Assolutamente simile a Yii 1? – Brett

Problemi correlati