Installare un’estensione di Yii2

Yii2 è un framework molto maturo e mette a disposizione un numero elevato di estensioni per poter utilizzare strumenti già pronti nel proprio progetto.

Un elenco esaustivo di tali estensioni si trova alla pagina http://www.yiiframework.com/extensions/?tag=yii2

1. Come installare un’estensione

Per installare un’estensione possiamo utilizzare ancora il grande strumento chiamato composer, poichè la maggior parte delle estensioni viene distribuita proprio come pacchetto per composer.

E’ semplice. Basta seguire questi due passi:

  1. Modificare il file composer.json della propria applicazione (si trova nella cartella principale) e specificare quale estensione (Composer packages) si vuole installare.
  2. Utilizzare il comando composer install per installare l’estensione specificata.

2. Esempio di installazione di un’estensione

Supponiamo di voler installare l’estensione che troviamo a questa pagina: https://github.com/dmstr/yii2-adminlte-asset

Nelle istruzioni ci viene suggerito di utilizzare composer con la seguente stringa:

php composer.phar require dmstr/yii2-adminlte-asset "2.*"

Noi utilizzeremo solo la seconda parte della stringa, leggermente modificata:

"dmstr/yii2-adminlte-asset": "2.*"

apriremo il file composer.json e inseriremo la riga appena vista nella sezione require:

"require": {
        ...,
        "dmstr/yii2-adminlte-asset": "2.*"
    },

Dopo aver chiuso il file, apriremo un prompt dei comandi nella cartella principale del progetto (nella quale è contenuto il file composer.json) e daremo il comando:

composer update

che installerà la nostra nuova estensione e aggiornerà le altre presenti.

3. Risoluzione di eventuali problemi

Se l’operazione descritta sopra ci proponesse come risposta un errore del tipo

[ReflectionException]
  Class Fxp\Composer\AssetPlugin\Repository\NpmRepository does not exist

  [ErrorException]
  Declaration of Fxp\Composer\AssetPlugin\Repository\AbstractAssetsRepository
  ::whatProvides() should be compatible with Composer\Repository\ComposerRepo
  sitory::whatProvides(Composer\DependencyResolver\Pool $pool, $name, $bypass
  Filters = false)

sarà necessario eseguire la riga di comando

composer global update fxp/composer-asset-plugin --no-plugins

e ritornare al punto 2.

Commenti

commenti