Domanda Yii2: include solo lo script JS per la vista specifica


Voglio includere il mio script js specific.js per una vista specifica con ID azione specific-action-id. Io non voglio il specific.js essere incluso in ogni pagina.

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


10
2018-02-28 12:01


origine


risposte:


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

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

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


15
2018-02-28 13:34



Si consiglia vivamente di utilizzare bundle di asset per registrare file JS esterni anziché registerJsFile () poiché consentono una maggiore flessibilità e una configurazione delle dipendenze 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.

Quindi puoi creare un nuovo file AppAsset e inserire i file css e javascript in esso.

Crea il pacchetto di asset

Nella directory \ assets, 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 <qiang.xue@gmail.com>
 * @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 tuo file di visualizzazione

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


4
2017-08-23 07:49



@soju ha ragione. 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
2018-03-17 17:13