Come programmare con Yii2 Utilizzo del modello di applicazione avanzato

Cosa starai creando

Se stai chiedendo "Cos'è Yii?" check-out Introduzione al framework Yii, che rivede i vantaggi di Yii e include una panoramica di Yii 2.0.

In questa serie di programmazione con Yii2, guido i lettori all'uso di Yii2 Framework per PHP. Quando inizi a utilizzare Yii per lo sviluppo reale, potresti voler avviare il tuo prossimo progetto con il suo modello di applicazione avanzato. Tra le altre cose, fornisce funzionalità di gestione degli utenti integrate e due applicazioni, una per il front-end rivolto al consumatore e l'altra, un back-end amministrativo.

In questo tutorial, ti presenterò il modello avanzato di Yii2 e ti guiderò nella configurazione e nell'utilizzo di base. Mentre Programmazione con Yii2: Integrazione registrazione utente esplorata implementando la gestione degli utenti sulla parte superiore del modello base con l'estensione utente Yii2, questa esercitazione avvierà un nuovo repository con il modello avanzato anziché continuare gli esempi sul nostro base base di codice Yii ciao. 

Prima di iniziare, ricorda, cerco di partecipare alle discussioni di seguito. Se hai una domanda o un suggerimento sull'argomento, per favore pubblica un commento qui sotto o contattami su Twitter @reifman. Puoi anche scrivermi direttamente via email.

Se hai notato che c'è stato un ritardo in questa serie, è perché sono tornato di recente da un intervento chirurgico al cervello. Grazie per la vostra pazienza e supporto: è bello scrivere di nuovo regolarmente, e non vedo l'ora di continuare la copertura di Yii2.

Come il modello avanzato è diverso

Il motivo più utile per migrare al modello avanzato è l'implementazione delle funzionalità di gestione degli utenti come registrazione, accesso, disconnessione e reimpostazione della password.

Il modello avanzato fornisce anche alberi ad accesso multiplo per un'applicazione web più grande. Ha un'applicazione web front-end e back-end per utenti finali e amministratori. Ma potrebbe anche essere ampliato, ad esempio per i moderatori o un'API speciale, sebbene vi siano altri modi per integrare queste funzionalità in un'applicazione.

Ecco una tabella che mostra le principali differenze tra la base di vaniglia Yii e l'installazione avanzata:

Nelle mie ultime esercitazioni sull'estensione utente di Yii2, sono sempre più impressionato dal suo set di funzionalità come alternativa al modello avanzato. Tuttavia, può anche essere facilmente integrato in entrambe le installazioni.

Vale la pena esplorare il modello avanzato prima di iniziare un grande progetto. Sto per aiutarti a fare proprio questo.

Installazione del modello avanzato

Iniziamo ad installare il modello avanzato con Yii2. Possiamo seguire le istruzioni del progetto di template avanzato su GitHub.

Aggiornamento del compositore

Innanzitutto, ci assicureremo che il compositore abbia i pacchetti di cui ha bisogno:

$ compositore globale richiede "fxp / compositore-asset-plugin: ~ 1.0.3" La directory corrente modificata in /Users/Jeff/.composer ./composer.json è stata aggiornata Caricamento dei repository di compositore con informazioni sul pacchetto Aggiornamento delle dipendenze (incluso require-dev ) Nulla da installare o aggiornare Generare file di caricamento automatico

Installazione di Yii con il modello avanzato

Quindi, possiamo installare Yii con il modello di progetto avanzato. Chiameremo la nostra app tutorial yiiplus:

$ compositore crea-progetto --prefer-dist yiisoft / yii2-app-advanced yiiplus Installazione yiisoft / yii2-app-advanced (2.0.6) - Installazione di yiisoft / yii2-app-advanced (2.0.6) Caricamento da cache Creato progetto in yiiplus Caricamento di repository di composer con informazioni sul pacchetto Installazione delle dipendenze (incluso require-dev) - Installazione di yiisoft / yii2-composer (2.0.3) Caricamento dalla cache - Installazione di ezyang / htmlpurifier (v4.6.0) Caricamento dalla cache - Installazione di cebe / markdown ( 1.1.0) Caricamento dalla cache - Installazione di bower-asset / jquery (2.1.4) Caricamento dalla cache - Installazione di bower-asset / jquery.inputmask (3.1.63) Caricamento dalla cache - Installazione di bower-asset / punycode (v1.3.2 ) Caricamento dalla cache - Installazione di bower-asset / yii2-pjax (v2.0.4) Caricamento dalla cache - Installazione di yiisoft / yii2 (2.0.6) Caricamento dalla cache - Installazione di swiftmailer / swiftmailer (v5.4.1) Caricamento dalla cache - Installazione di yiisoft / yii2-swiftmailer (2.0.4) Caricamento dalla cache - Installazione di yiisoft / yii2-codeception (2.0.4) Caricamento dalla cache - Inst alling bower-asset / bootstrap (v3.3.5) Caricamento dalla cache - Installazione di yiisoft / yii2-bootstrap (2.0.5) Caricamento dalla cache - Installazione di yiisoft / yii2-debug (2.0.5) Caricamento dalla cache - Installazione di bower-asset / typeahead.js (v0.10.5) Caricamento dalla cache - Installazione di phpspec / php-diff (v1.0.2) Caricamento dalla cache - Installazione di yiisoft / yii2-gii (2.0.4) Caricamento dalla cache - Installazione di fzaninotto / faker (v1.5.0 ) Caricamento dalla cache - Installazione di yiisoft / yii2-faker (2.0.3) Caricamento dalla cache Scrittura del file di blocco Generazione dei file di caricamento automatico

Inizializzazione della nostra applicazione Yii

Ora inizializziamo la nostra applicazione: 

$ cd ~ / Sites / yiiplus $ php init Yii Application Initialization Tool v1.0 In quale ambiente si desidera inizializzare l'applicazione? [0] Sviluppo [1] Produzione La tua scelta [0-1, o "q" per uscire] 0 Inizializza l'applicazione in ambiente 'Sviluppo'? [si | no] sì Avvia l'inizializzazione ... genera backend / config / main-local.php genera backend / config / params-local.php genera backend / web / index-test.php genera backend / web / index.php genera common / config / main-local.php genera common / config / params-local.php genera console / config / main-local.php genera console / config / params-local.php genera frontend / config / main-local.php genera frontend / config / params-local.php genera frontend / web / index-test.php genera frontend / web / index.php genera yii genera cookie convalida key in backend / config / main-local.php genera cookie validation key in frontend / config / main-local.php chmod 0777 backend / runtime chmod 0777 backend / web / assets chmod 0777 frontend / runtime chmod 0777 frontend / web / assets chmod 0755 yii chmod 0755 test / codeception / bin / yii ... inizializzazione completata.

Preparare il database

Successivamente, utilizzerò la versione installata di PHPMyAdmin di MAMP per creare il database:

Clic Creare. Prendendo screenshot per il tutorial, ho dimenticato di fare clic su create e poi mi sono chiesto perché non ero in grado di migrare il mio database - non esisteva ancora.

Successivamente, modifica /common/config/main-local.php per includere le impostazioni del tuo database:

 ['db' => ['class' => 'yii \ db \ Connessione', 'dsn' => 'mysql: host = localhost; dbname = yiiplus', 'username' => 'root', 'password' = > '-localmysqldevpwd-', 'charset' => 'utf8',], 'mailer' => [ 

Quindi, sei pronto per eseguire la migrazione del database per inizializzare la tua applicazione. Questo imposta principalmente la tabella per la gestione degli utenti:

$ ./yii esegui la migrazione dello strumento di migrazione Yii (basato su Yii v2.0.6) Creazione della tabella della cronologia delle migrazioni "migrazione" ... Fatto. Totale 1 nuova migrazione da applicare: m130524_201442_init Applicare la migrazione sopra? (sì | no) [no]: sì *** applica m130524_201442_init> crea tabella % utente ... fatto (tempo: 0.007s) *** applicato m130524_201442_init (tempo: 0.022s) Migrato con successo. 

Configurazione di Apache per i siti front-end e back-end

Quando configuriamo il nostro ambiente di sviluppo o di produzione con il modello avanzato, dobbiamo puntare il web server su un percorso root differente, due in realtà. 

Innanzitutto, modificheremo il file hosts per includere frontend.dev e backend.dev:

$ più / etc / hosts 127.0.0.1 localhost 127.0.0.1 frontend.dev 127.0.0.1 backend.dev

Nel mio ambiente di sviluppo con MAMP, collegherò la mia directory yiiplus a htdocs di MAMP:

 $ cd / Applicazioni / MAMP / htdocs / $ ln -s ~ / Sites / yiiplus / Applicazioni / MAMP / htdocs / yiiplus

Quindi, attiverò (decommenta) l'inclusione per gli host virtuali:

$ nano /Applications/MAMP/conf/apache/httpd.conf # Gli host virtuali includono /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

E configura i percorsi per ciascuno dei miei nomi di server:

$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf NameVirtualHost *: 8888  ServerName frontend.dev DocumentRoot / Applicazioni / MAMP / htdocs / yiiplus / frontend / web /  # usa mod_rewrite per il supporto URL piuttosto RewriteEngine su # Se esiste una directory o un file, usa direttamente la richiesta RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Altrimenti inoltra la richiesta a index.php RewriteRule. index.php # usa index.php come indice file DirectoryIndex index.php # ... altre impostazioni ...    ServerName backend.dev DocumentRoot / Applicazioni / MAMP / htdocs / yiiplus / backend / web /  # usa mod_rewrite per il supporto URL piuttosto RewriteEngine su # Se esiste una directory o un file, usa direttamente la richiesta RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Altrimenti inoltra la richiesta a index.php RewriteRule. index.php # usa index.php come indice file DirectoryIndex index.php # ... altre impostazioni ...  

Una volta completato, ecco come sarà il sito Web front-end su http://frontend.dev:8888:

Il sito di back-end ti chiederà di accedere: è per gli amministratori:

Esplorazione della gestione degli utenti

Ora ti guiderò attraverso le funzionalità di base per la gestione degli utenti del modello avanzato. Ma prima dobbiamo assicurarci di ricevere e-mail da Yii nel nostro ambiente di sviluppo.

Configurazione della consegna di email

La gestione degli utenti invia e-mail per il reset della password, quindi è necessario attivare la configurazione SMTP di SwiftMailer di Yii. Userò Mailtrap.io, che ho esplorato in un tutorial precedente, Introduzione a Mailtrap: un server SMTP falso per test di pre-produzione di e-mail dell'applicazione.

Mailtrap fornisce un server SMTP fasullo per il tuo team di sviluppo per testare, visualizzare e condividere le email inviate dagli ambienti di pre-produzione e testare con dati reali senza il rischio di spamming ai clienti reali. Per molte attività di sviluppo, l'utilizzo di Mailtrap sarà gratuito.

In sostanza, ti iscrivi a Mailtrap e invii tutta l'email dell'ambiente di pre-produzione tramite il tuo falso server SMTP Mailtrap. Ecco una breve panoramica video di Mailtrap by Railsware:

Se segui il tutorial e crei un account Mailtrap, vedrai la tua casella di posta demo:

Inoltre, quando fai clic sull'icona Impostazioni nell'elenco Posta in arrivo, vedrai che ciascuna casella postale di Mailtrap ha le proprie credenziali del server SMTP:

Con Yii, sto aggiornando le impostazioni SMTP di SwiftMailer in /common/config/main-local.php. Ecco come potrebbe essere:

 'mailer' => ['class' => 'yii \ swiftmailer \ Mailer', 'viewPath' => '@ common / mail', 'useFileTransport' => false, 'transport' => ['class' => ' Swift_SmtpTransport ',' host '=>' mailtrap.io ',' username '=>' 29xxxxxxxxxxx72 ',' password '=>' 2c3xxxxxxxxxxf5 ',' port '=>' 2525 ',' encryption '=>' tls ', ],],

Si noti che se non si personalizza il viewPath come mostrato sopra, è possibile che si verifichi un bug attorno ai file del modello di email non trovati.

Iscrizione e registrazione

Ecco come appare la schermata di registrazione front-end:

Ti atterrerà sulla home page in stato di accesso:

Registrati

Ecco la schermata di accesso:

Hai dimenticato la password

Ed ecco il Hai dimenticato la password schermo:

Se chiedi una nuova password, la troverai all'interno Mailtrap:

Qual'è il prossimo?

Si consiglia di controllare la mia costruzione la tua startup con la serie PHP, che utilizza il modello avanzato di Yii2. Inoltre, se sei interessato ad integrare questo tutorial con l'utente Yii2, consulta la guida per integrare l'utente di Yii2 con il modello avanzato e l'autenticazione di Google (disponibile a breve).

Spero ti sia piaciuto conoscere il modello di applicazione avanzato Yii2. Sarei curioso di sentire il tuo feedback nei commenti se preferisci il modello base.

Guarda le prossime esercitazioni nella mia serie Programming with Yii2 mentre continuo a immergermi nei diversi aspetti del framework. Accolgo richieste di argomenti e argomenti. Puoi postarli nei commenti qui sotto o mandarmi una e-mail sul mio sito Web di Lookahead Consulting.

Se vuoi sapere quando arriverà il prossimo tutorial di Yii2, seguimi @reifman su Twitter o controlla la mia pagina di istruttore. La mia pagina di istruttore includerà tutti gli articoli di questa serie non appena saranno pubblicati. 

  • Yii2 Template avanzato
  • Yii2 Developer Exchange
  • Una raccolta di script basati su Yii su CodeCanyon