Generare codice con Gii

Questa sezione descrive come usare Gii per generare automaticamente il codice che implementa alcune funzionalità comuni dei siti web. Usare Gii per generare codice è semplicemente questione di inserire le informazioni corrette, seguendo le istruzioni mostrate nelle pagine web di Gii.

In questo tutorial imparerai come:

  • abilitare Gii nella tua applicazione,
  • usare Gii per generare una classe Active Record,
  • usare Gii per generare il codice che implementa le operazioni CRUD per una tabella del database,
  • personalizzare il codice generato da Gii.

Avviare Gii

Gii è fornito in Yii come modulo. Puoi abilitare Gii configurandolo nella proprietà modules dell'applicazione. A seconda di come hai creato la tua applicazione, potresti trovare il codice seguente già presente nel file di configurazione config/web.php:

$config = [ ... ];

if (YII_ENV_DEV) {
    $config['bootstrap'][] = 'gii';
    $config['modules']['gii'] = [
        'class' => 'yii\gii\Module',
    ];
}

La configurazione precedente stabilisce che, in ambiente di sviluppo, l'applicazione deve includere un modulo di nome gii, che appartiene alla classe yii\gii\Module.

Se controlli l'entry script web/index.php della tua applicazione, troverai la riga seguente, che in sostanza fa sì che YII_ENV_DEV sia true.

defined('YII_ENV') or define('YII_ENV', 'dev');

Grazie a questa riga, la tua applicazione è in modalità di sviluppo e, secondo la configurazione precedente, avrà già Gii abilitato. Ora puoi accedere a Gii tramite il seguente URL:

https://hostname/index.php?r=gii

Note: Se accedi a Gii da una macchina diversa da localhost, l'accesso viene negato per impostazione predefinita per motivi di sicurezza. Puoi configurare Gii aggiungendo gli indirizzi IP consentiti come segue:

'gii' => [
    'class' => 'yii\gii\Module',
    'allowedIPs' => ['127.0.0.1', '::1', '192.168.0.*', '192.168.178.20'] // adatta questo alle tue esigenze
],

Gii

Generare una classe Active Record

Per generare una classe Active Record con Gii, seleziona il "Model Generator" (cliccando sul link nella pagina iniziale di Gii). Poi compila il form come segue:

  • Table Name: country
  • Model Class: Country

Model Generator

Quindi clicca sul pulsante "Preview". Vedrai che models/Country.php è elencato tra i file di classe che verranno creati. Puoi cliccare sul nome del file di classe per visualizzarne l'anteprima del contenuto.

Quando usi Gii, se hai già creato lo stesso file e lo sovrascriveresti, clicca sul pulsante diff accanto al nome del file per vedere le differenze tra il codice che verrà generato e la versione esistente.

Model Generator Preview

Per sovrascrivere un file esistente, seleziona la casella accanto a "overwrite" e poi clicca sul pulsante "Generate". Se stai creando un nuovo file, puoi semplicemente cliccare su "Generate".

Successivamente vedrai una pagina di conferma che indica che il codice è stato generato con successo. Se avevi un file esistente, vedrai anche un messaggio che indica che è stato sovrascritto con il nuovo codice generato.

Generare codice CRUD

CRUD è l'acronimo di Create, Read, Update e Delete, che rappresentano le quattro operazioni comuni eseguite sui dati nella maggior parte dei siti web. Per creare le funzionalità CRUD con Gii, seleziona il "CRUD Generator" (cliccando sul link nella pagina iniziale di Gii). Per l'esempio "country", compila il form risultante come segue:

  • Model Class: app\models\Country
  • Search Model Class: app\models\CountrySearch
  • Controller Class: app\controllers\CountryController

CRUD Generator

Quindi clicca sul pulsante "Preview". Vedrai un elenco dei file che verranno generati, come mostrato di seguito.

CRUD Generator Preview

Se in precedenza hai creato i file controllers/CountryController.php e views/country/index.php (nella sezione della guida dedicata ai database), seleziona la casella "overwrite" per sostituirli. (Le versioni precedenti non avevano il supporto CRUD completo.)

Proviamolo

Per vedere come funziona, usa il tuo browser per accedere al seguente URL:

https://hostname/index.php?r=country%2Findex

Vedrai una griglia di dati che mostra i paesi presenti nella tabella del database. Puoi ordinare la griglia oppure filtrarla inserendo le condizioni di filtro nelle intestazioni delle colonne.

Per ogni paese visualizzato nella griglia puoi scegliere di vederne i dettagli, aggiornarlo o eliminarlo. Puoi anche cliccare sul pulsante "Create Country" in cima alla griglia per ottenere un form per la creazione di un nuovo paese.

Data Grid of Countries

Updating a Country

Di seguito è riportato l'elenco dei file generati da Gii, nel caso tu voglia approfondire come sono implementate queste funzionalità o personalizzarle:

  • Controller: controllers/CountryController.php
  • Modelli: models/Country.php e models/CountrySearch.php
  • Viste: views/country/*.php

Info: Gii è progettato per essere uno strumento di generazione del codice altamente personalizzabile ed estensibile. Usarlo con criterio può accelerare notevolmente lo sviluppo della tua applicazione. Per maggiori dettagli fai riferimento alla sezione Gii.

Riepilogo

In questa sezione hai imparato come usare Gii per generare il codice che implementa la funzionalità CRUD completa per i contenuti memorizzati in una tabella del database.