2015-02-28 6 views
8

Desidero includere il mio js script specific.js per una vista specifica con ID azione specific-action-id. Non voglio che lo specific.js sia incluso in ogni pagina.Yii2 - Include solo JS Script per vista specifica

Per includere uno script js per l'intero sito, normalmente devo modificare AppAsset.php. Per questo scopo, cosa dovrei fare?

risposta

14

Dovresti semplicemente registrare questo file js nella tua vista, ad es. :

$this->registerJsFile('@web/js/specific.js'); 

Per saperne di più: http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html#registering-scripts

+0

Questo wo non aggiungere ad azioni specifiche .. questa è una procedura generica per aggiungere un file js da visualizzare. Per aggiungere in base all'ID azione, potrebbe essere necessario seguire l'evento afterAction. –

1

@soju è giusto. Ma puoi anche creare pacchetti di risorse specifici per utilizzare viste specifiche. I tuoi file js specifici possono essere un gruppo di file in questa situazione, è possibile utilizzare i bundle di asset e utilizzare qualsiasi visualizzazione desiderata.

1

Si consiglia vivamente di usare fasci di attività per registrare file JS esterni piuttosto che registerJsFile() perché questi consentono una maggiore flessibilità di configurazione e la dipendenza più granulare. Inoltre, l'utilizzo di bundle di asset consente di combinare e comprimere più file JS, il che è auspicabile per i siti Web con traffico elevato.

in modo da poter creare un nuovo file AppAsset e mettere il vostro CSS e JavaScript file in essa contenuti.

Creare l'Asset Bundle

nella directory \ attivi, creiamo StatusAsset.php:

<?php 
/** 
* @link http://www.yiiframework.com/ 
* @copyright Copyright (c) 2008 Yii Software LLC 
* @license http://www.yiiframework.com/license/ 
*/ 

namespace app\assets; 

use yii\web\AssetBundle; 

/** 
* @author Qiang Xue <[email protected]> 
* @since 2.0 
*/ 
class StatusAsset extends AssetBundle 
{ 
    public $basePath = '@webroot'; 
    public $baseUrl = '@web'; 
    public $css = []; 
    public $js = [ 
     '/js/jquery.simplyCountable.js', 
     '/js/twitter-text.js', 
     '/js/twitter_count.js', 
     '/js/status-counter.js', 
    ]; 
    public $depends = [ 
      'yii\web\YiiAsset', 
      'yii\bootstrap\BootstrapAsset', 
     ]; 
} 

Nel file vista

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

Risorse http://www.yiiframework.com/doc-2.0/guide-output-client-scripts.html https://code.tutsplus.com/tutorials/how-to-program-with-yii2-working-with-asset-bundles--cms-23226