[Yii 2] Composer E Gii

Sembrerà strano, ma io non ho mai usato composer.

Sono riuscito comunque a scaricare yii e fae la web app in versione advanced.

Ora sono qui: http://www.yiiframework.com/doc-2.0/guide-gii.html

Dove leggo

Ora, io apro il file e c’è una marea di roba dentro… tra cui la sezione require




"require": {

		"php": ">=5.4.0",

		"yiisoft/yii2": "*",

		"yiisoft/yii2-bootstrap": "*",

		"yiisoft/yii2-swiftmailer": "*"

	},



Ci aggiungo la riga come li sopra




	"require": {

		"php": ">=5.4.0",

		"yiisoft/yii2": "*",

		"yiisoft/yii2-bootstrap": "*",

		"yiisoft/yii2-swiftmailer": "*",

		"yiisoft/yii2-gii": "*"

	},



Ed ora ?!

Ho trovato questo:




composer require --prefer-dist yiisoft/yii2-gii "*"



E poi ci dentro da qui (io uso xampp in locale per ora):




http://localhost/frontend/web/index.php?r=gii/default/index



Domanda stupida: perchè gii è ‘sotto’ il frontend?

Non dovrebbe fare parte del backend ?

Nel composer.json ci sono tutte le informazioni che servono a composer per impostare la tua app!

Gii è un tool che usi solo per lo sviluppo e sarebbe buona cosa metterlo tra i “require-dev” così quando vorrai installare l’app in produzione non ti porti dietro anche gii che non serve!

Ad esempio, in una mia app ho tra i require




"require": {

    "php": ">=5.4.0",

    "yiisoft/yii2": "*",

    "yiisoft/yii2-bootstrap": "*",

    "yiisoft/yii2-swiftmailer": "*",

    "kartik-v/yii2-widgets": "dev-master",

    "kartik-v/yii2-helpers": "dev-master",

    "kartik-v/yii2-icons": "dev-master",

    "kartik-v/yii2-password": "dev-master",

    "kartik-v/yii2-grid": "dev-master"

},

Cioè tutte le estensioni che servono all’app per funzionare, mentre quelle che uso solo in fase di sviluppo sono in require-dev:




"require-dev": {

		"yiisoft/yii2-codeception": "*",

		"yiisoft/yii2-debug": "*",

		"yiisoft/yii2-gii": "*",

		"codeception/codeception": " 1.8.3",

		"codeception/specify": " *",

		"codeception/verify": " *"

	},



quindi tutte le cosine per test, debug etc…

Per quanto riguarda gii puoi metterlo in backend o frontend o entrambi, dipende dal file di config.

Io non uso il template advanced ma penso che caricando il modulo gii solo nel web.php del backend ti permetta di accederci dal backend.

Il template advanced è piuttosto articolato, oltre a prevedere backend e frontend ti fornisce anche ambienti diversi per lo sviluppo e la produzione e quindi un nutrito set di configurazioni da fare!

http://www.yiiframework.com/doc-2.0/guide-gii.html

E’ nella guida ufficiale di metterlo in require, per cui … non sapendo ne leggere ne scrivere l’ho fatto anche io

I file di gii, comunque, non si trovano FISICAMENTE ne dentro frontend ne dentro backend, motivo per cui (credo) il modulo è accessibile sia da frontend che da backend (indagherò questa sera al ritorno a casa).

Questa cosa l’ho scoperta molto tempo dopo aver scritto il post. Infatti, richiamando gii dal frontend, crea le cose sotto frontend, richiamandolo dal backend funziona lo stesso e crea le cose sotto backend. (cambia @app difatti).

A livello di configurazione, ovviamente essendo i primi passi in yii 2, che è ancora in beta, le sto affrontando una per volta…

@Nicola: apri tu una issue su github e consiglia il passaggio da required a required-dev.

E’ comunque vero che io rilascio tramite git, per cui nel mio caso cosa devo fare perchè in produzione non ci finisca gii ?

Eh dipende da come fai il deploy, gii lo carica dal file di configurazione quindi puoi fare un config di produzione che non carichi gii ed eliminare l’estensione dentro vendor/, in questo caso differisce poco da Yii1.

dato che usi la basic e non l’advanced, immagino non puoi aiutarmi a capire come fare quello che hai detto, vero?