La cosa migliore è installarla via composer.
Se la libreria è php:
Dovresti verificare che sia presente tra i pacchetti, inserire il nome del pacchetto tra i "require" in composer.json
"require": {
...
"kartik-v/yii2-widgets": "*",
},
Se la libreria è JS:
Verifichi che la libreria sia gestita anche con Bower, se c’è, sempre nella sezione require di composer.json, inserisci il nome del pacchetto preceduto da “bower-asset/”, una cosa così:
"require": {
...
"bower-asset/foundation": "5.4.*"
},
Stesso sistema per i pacchetti NPM, ma in questo caso userai "npm-asset/".
Una volta modificato il composer.js entri nella root della tua app e dai un "composer update" per fargli scaricare tutti i files che ti occorrono, da questo momento le tue lib sono dentro "vendor/pacchetto".
Fatto questo ti fai il tuo widget dichiarando anche un asset (classe AssetBundle) che tiri su tutti i js e i css della libreria, quindi una classe tipo:
namespace widget/namespace;
use yii\web\AssetBundle;
/**
* Asset bundle for my Widget.
*/
class MyWidgetAsset extends AssetBundle {
public $sourcePath = '@vendor';
public $js = [
'path/to/vendor.js',
];
public $css = [
'path/to/vendor.css',
];
}
Nel tuo Widget poi andrai a richiamare l’asset per fargli caricare le librerie che ti servono, ad esempio nella init() puoi mettere una cosa tipo
class MyWidget extends \qualcosa
public function init()
$view = $this->getView();
MyWidgetAsset::register($view);
...
}
...
}
Ovviamente l’implementazione varia in base al tipo di widget.
Se non puoi usare composer le vie suggerite sono queste, io ti consiglio comunque di creare un assetBundle per il tuo widget è il metodo consigliato e più efficente.