mirror of
https://github.com/yiisoft/yii.git
synced 2026-03-12 02:56:55 +01:00
256 lines
11 KiB
Plaintext
256 lines
11 KiB
Plaintext
Crea la tua prima applicazione con Yii
|
|
===================================
|
|
|
|
Per farti avere la prima esperienza con Yii, in questa sezione viene descritto
|
|
come creare la tua prima applicazione con Yii. Utilizzeremo `yiic` (uno
|
|
strumento a riga di comando) per creare una nuova applicazione Yii e `Gii`
|
|
(potente generatore di codice ad interfaccia web) per automatizzare la
|
|
generazione di codice per determinate attività. Per comodità, si da per
|
|
scontato che `YiiRoot` sia la cartella in cui è installato Yii, e `WebRoot`
|
|
sia la cartella radice del web server.
|
|
|
|
Eseguire `yiic` su riga di comando come segue:
|
|
|
|
~~~
|
|
% YiiRoot/framework/yiic webapp WebRoot/testdrive
|
|
~~~
|
|
|
|
> Nota: Quando si esegue `yiic` su Mac OS, Linux or Unix, potrebbe essere
|
|
> necessario cambiare i permessi di esecuzione del file `yiic` per renderlo
|
|
> eseguibile. In alternativa, è possibile eseguire `yiic` come segue,
|
|
>
|
|
> ~~~
|
|
> % cd WebRoot
|
|
> % php YiiRoot/framework/yiic.php webapp testdrive
|
|
> ~~~
|
|
|
|
Questo creerà lo schema di una applicazione Yii all'interno della cartella
|
|
`WebRoot/testdrive`. L'applicazione ha uno schema di cartelle che è richiesta
|
|
dalla maggior parte delle applicazioni Yii.
|
|
|
|
Senza scrivere neanche una riga di codice PHP, possiamo provare la nostra
|
|
prima applicazione Yii accedendo al seguente URL in un browser web:
|
|
|
|
~~~
|
|
http://hostname/testdrive/index.php
|
|
~~~
|
|
|
|
Come si può vedere, l'applicazione ha quattro pagine: la home page, la pagina
|
|
del chi siamo, la pagina dei contatti e la pagina di login. La pagina dei
|
|
contatti mostra un form di contatto che gli utenti possono compilare per
|
|
presentare le loro richieste al webmaster, la pagina di login consente agli
|
|
utenti di autenticarsi prima di accedere ai contenuti riservati. Guarda questi
|
|
screenshot per maggiori dettagli.
|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|

|
|
|
|
|
|
Il seguente diagramma mostra la struttura delle cartelle della nostra
|
|
applicazione. Si prega di consultare le
|
|
[Convenzioni](/doc/guide/basics.convention#directory) per maggiori
|
|
spiegazioni.
|
|
|
|
~~~
|
|
testdrive/
|
|
index.php script di entrata della web application
|
|
index-test.php script di entrata per i test funzionali
|
|
assets/ contenitore dei file di risorse pubblicate
|
|
css/ contenitore dei file CSS
|
|
images/ contenitore dei file immagine
|
|
themes/ contenitore dei temi dell'applicazione
|
|
protected/ contenitore dei file protetti dell'applicazione
|
|
yiic script di riga di comando per Unix/Linux
|
|
yiic.bat script di riga di comando per Windows
|
|
yiic.php script di riga di comando in PHP
|
|
commands/ contenitore di comandi 'yiic' personalizzati
|
|
shell/ contenitore di comandi 'yiic shell' personalizzati
|
|
components/ contenitore di componenti utente riutilizzabili
|
|
Controller.php classe di base per tutte le classi Controller
|
|
UserIdentity.php la classe 'UserIdentity' usata per l'autenticazione
|
|
config/ contenitore dei file di configurazione
|
|
console.php configurazione della console dell'applicazione
|
|
main.php configurazione della web application
|
|
test.php configurazione dei test funzionali
|
|
controllers/ contenitore dei file delle classi Controller
|
|
SiteController.php classe Controller di default
|
|
data/ contenitore di database di esempio
|
|
schema.mysql.sql schema di esempio database MySQL
|
|
schema.sqlite.sql schema di esempio database SQLite
|
|
testdrive.db file di esempio database SQLite
|
|
extensions/ contenitore estensioni di terze parti
|
|
messages/ contenitore delle traduzioni dei messaggi
|
|
models/ contenitore dei file delle classi Model
|
|
LoginForm.php il Model del form di login per l'Action di 'login'
|
|
ContactForm.php il Model del form di contatto per l'Action 'contact'
|
|
runtime/ contenitore dei file generati temporaneamente
|
|
tests/ contenitore degli script di test
|
|
views/ contenitore dei file di View dei layout e dei Controller
|
|
layouts/ contenitore dei file di View dei layout
|
|
main.php layout di base condiviso da tutte le pagine
|
|
column1.php layout per le pagine che utilizzano una singola colonna
|
|
column2.php layout per le pagine che utilizzano due colonne
|
|
site/ contenitore dei file di View del Controller 'site'
|
|
pages/ contenitore delle pagine "static" (statiche)
|
|
about.php la View della pagina "about"
|
|
contact.php la View della action 'contact'
|
|
error.php la View della action 'error' (visualizza errori esterni)
|
|
index.php la View della action 'index'
|
|
login.php la View della action 'login'
|
|
~~~
|
|
|
|
Connessione al database
|
|
----------------------
|
|
|
|
La maggior parte delle web application si appoggiano ad un database. La nostra
|
|
applicazione di prova non fa eccezione. Per utilizzare un database, occorre
|
|
spiegare all'applicazione come connettersi con esso. Ciò viene fatto nel file
|
|
di configurazione dell'applicazione
|
|
`WebRoot/testdrive/protected/config/main.php`, evidenziato di seguito,
|
|
|
|
~~~
|
|
[php]
|
|
return array(
|
|
......
|
|
'components'=>array(
|
|
......
|
|
'db'=>array(
|
|
'connectionString'=>'sqlite:protected/data/testdrive.db',
|
|
),
|
|
),
|
|
......
|
|
);
|
|
~~~
|
|
|
|
Il codice qui sopra spiega a Yii che l'applicazione dovrebbe connettersi,
|
|
quando è necessario, al database SQLite
|
|
`WebRoot/testdrive/protected/data/testdrive.db`. Si noti che il database
|
|
SQLite è già incluso nella struttura dell'applicazione che è stata appena
|
|
generata. Il database contiene una sola tabella che si chiama `tbl_user`:
|
|
|
|
~~~
|
|
[sql]
|
|
CREATE TABLE tbl_user (
|
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
|
username VARCHAR(128) NOT NULL,
|
|
password VARCHAR(128) NOT NULL,
|
|
email VARCHAR(128) NOT NULL
|
|
);
|
|
~~~
|
|
|
|
Se invece si vuole utilizzare un database MySQL, si può utilizzare il file
|
|
che contiene lo schema MySQL
|
|
`WebRoot/testdrive/protected/data/schema.mysql.sql` per creare il database.
|
|
|
|
> Nota: per utilizzare la funzionalità database di Yii, è necessario abilitare
|
|
le estensioni PDO di PHP ed il driver specifico per l'estensione PDO.
|
|
Per l'applicazione di prova è necessario abilitare sia l'estensione `php_pdo`
|
|
che `php_pdo_sqlite`.
|
|
|
|
|
|
Implementazione delle operazioni CRUD
|
|
----------------------------
|
|
|
|
Adesso arriva la parte divertente. Vorremmo implementare le operazioni CRUD
|
|
(create, read, update and delete - crea, leggi, aggiorna e cancella) per la
|
|
tabella `tbl_user` appena creata. Questa è una necessità tipica delle
|
|
applicazioni. Invece di sobbarcarci l'onere di scrivere il codice necessario,
|
|
utilizzeremo `Gii` -- un potente generatore di codice ad interfaccia web.
|
|
|
|
> Informazione: Gii è stato reso disponibile a partire dalla versione 1.1.2. Prima di allora, per ottenere lo stesso risultato, è possibile utilizzare il citato strumento `yiic`. Per maggiori dettagli, si prega di fare riferimento a [Implementare operazioni CRUD con la shell yiic](/doc/guide/quickstart.first-app-yiic).
|
|
|
|
|
|
### Configurare Gii
|
|
|
|
Per poter utilizzare Gii, è necessario prima modificare il file
|
|
`WebRoot/testdrive/protected/config/main.php`, noto come il file di
|
|
[configurazione dell'applicazione](/doc/guide/basics.application#application-configuration):
|
|
|
|
~~~
|
|
[php]
|
|
return array(
|
|
......
|
|
'import'=>array(
|
|
'application.models.*',
|
|
'application.components.*',
|
|
),
|
|
|
|
'modules'=>array(
|
|
'gii'=>array(
|
|
'class'=>'system.gii.GiiModule',
|
|
'password'=>'inserire qui una password',
|
|
),
|
|
),
|
|
);
|
|
~~~
|
|
|
|
Poi visitare l'URL `http://hostname/testdrive/index.php?r=gii`. Verrà richiesta una password che dovrebbe essere quella che è stata appena personalizzata nel file di configurazione dell'applicazione qui sopra.
|
|
|
|
### Generazione del Model User
|
|
|
|
Dopo il login, cliccare sul link `Model Generator`. Questo ci porterà sulla seguente pagina di generazione dei Model,
|
|
|
|

|
|
|
|
Nel campo `Table Name` digiater `tbl_user`. Nel campo `Model Class` digitare `User`. Poi cliccare sul bottone `Preview`. Questo ci farà vedere il nuovo file di codice che sarà generato. Adesso premere il bottone`Generate`. Un nuovo fiel chiamato `User.php` sarà generato all'interno della cartella `protected/models`. Come sarà spiegato più avanti in questa guida, questa classe del Model `User` ci permette di parlare con la tabella `tbl_user` del database sottostante in modalità object-oriented.
|
|
|
|
### Generazione del codice CRUD
|
|
|
|
Dopo aver creato il file con la classe del Model, genereremo il codice che implementa le operazioni CRUD sui dati utente. Selezionare `Crud Generator` in Gii, come indicato di seguito,
|
|
|
|

|
|
|
|
Nel campo `Model Class` digitare `User`. Nel campo `Controller ID` digitare `user` (in minuscolo). Adesso premere il bottone `Preview` e poi il bottone `Generate`. Così abbiamo concluso con la generazione del codice per le funzionalità CRUD.
|
|
|
|
### Accedere alle pagine CRUD
|
|
|
|
Godiamoci il nostro lavoro navigando verso il seguente URL:
|
|
|
|
~~~
|
|
http://hostname/testdrive/index.php?r=user
|
|
~~~
|
|
|
|
Verrà visualizzato l'elenco delle voci della tabella `tbl_user`.
|
|
|
|
Cliccare sul bottone `Create User` sulla pagina. Se non ci siamo autenticati
|
|
in precedenza, saremo portati alla pagina di login. Dopo l'autenticazione
|
|
verrà visualizzato un form che ci consente di aggiungere un nuovo utente.
|
|
Compila il modulo e clicca sul bottone `Create`. Qualora ci sia un errore di
|
|
input, verrà visualizzato un simpatico messaggio di errore che ci impedisce di
|
|
salvare i dati inseriti. Tornando alla pagina di elenco degli utenti, dovremmo
|
|
vedere apparire nella lista il nuovo utente.
|
|
|
|
Ripetere i passaggi precedenti per aggiungere altri utenti. Notare che la
|
|
pagina della lista utenti verrà automaticamente suddivisa in più pagine se ci
|
|
sono troppi utenti da visualizzare in una pagina sola.
|
|
|
|
Se ci autentichiamo come amministratori utilizzando le credenziali
|
|
`admin/admin`, possiamo vedere la pagina dell'utente admin con il seguente
|
|
URL:
|
|
|
|
~~~
|
|
http://hostname/testdrive/index.php?r=user/admin
|
|
~~~
|
|
|
|
Verranno visualizzate le voci degli utenti in un bel formato tabellare.
|
|
Possiamo cliccare sull'intestazione della colonna per ordinare la tabella in
|
|
base a quella colonna. Possiamo cliccare sui bottoni di ciascuna riga di dati
|
|
visualizzati per visualizzare, aggiornare o cancellare la corrispondente riga
|
|
di dati. Possiamo sfogliare diverse pagine. Possiamo anche filtrare e cercare
|
|
i dati ai quali siamo interessati.
|
|
|
|
Tutte queste caratteristiche interessanti sono disponibili senza che ci sia la
|
|
necessità di scrivere una sola riga di codice PHP!
|
|
|
|

|
|
|
|

|
|
|
|
<div class="revision">$Id: quickstart.first-app.txt 3219 2011-05-13 03:03:35Z qiang.xue $</div> |