Come programmare con Yii2 come iniziare

Cosa starai creando

Se stai chiedendo, "che cos'è Yii?" guarda il mio precedente tutorial: Introduzione a Yii Framework, che esamina i vantaggi di Yii e include una panoramica delle novità di Yii 2.0, pubblicato il 12 ottobre 2014. 

Questo tutorial ti guiderà nell'installazione di Yii 2.0, nella configurazione dell'ambiente di sviluppo locale, nella creazione di una semplice applicazione Hello World, nella configurazione dell'ambiente di produzione remoto per l'hosting e la distribuzione del codice da un repository GitHub.

Installazione di Yii 2.0

Documentazione

Qui puoi trovare istruzioni dettagliate per l'installazione; Ti illustrerò le basi per un tipico ambiente di sviluppo Mac OS X. Yii 2.0 ha una guida definitiva (PDF) e un riferimento di classe che copre ogni dettaglio di Yii. circa

Installazione di Composer

Yii2 richiede Composer, un popolare gestore delle dipendenze per PHP. Se non hai ancora installato Composer, procedi nel seguente modo:

curl -s http://getcomposer.org/installer | php mv compositore.phar / usr / local / bin / compositore

Installazione di Yii2

Quindi, utilizzare Composer per installare Yii2. La richiesta di installazione richiede l'utilizzo delle proprie credenziali dell'account Github; iscriviti se non hai un account.

Chiamiamo questo primo progetto, "ciao":

cd ~ / Compositore di siti globale richiede "fxp / compositore-asset-plugin: 1.0.0-beta2" compositore crea-progetto --prefer-dist yiisoft / yii2-app-basic ciao

Yii2 offre due diversi modelli di installazione in base al tipo di applicazione che stai sviluppando: base e avanzato. Per questo tutorial, utilizzeremo l'applicazione di base che viene installata per impostazione predefinita. Il modello di applicazione avanzato fornisce un punto di accesso front-end, back-end e console per un'applicazione Web più avanzata, come un blog WordPress, il dashboard amministrativo e le attività cron di background.

Impostazione dell'ambiente di sviluppo locale

Sto usando MAMP open source gratuito per OS X per il mio sviluppo LAMP. Assicurati che MAMP sia in esecuzione e che i suoi server web e database siano attivi. Quindi, crea un link simbolico per MAMP al tuo siti directory app:

 cd / Applicazioni / MAMP / htdocs ln -s ~ / Sites / ciao / / Applicazioni / MAMP / htdocs / ciao

Quindi, visita http: // localhost: 8888 / hello / web. Dovresti vedere il modello di applicazione di base Yii2 in esecuzione con Bootstrap 3.x.. 


Quella pagina probabilmente entusiasmerà gli sviluppatori di Yii 1.1 che non hanno il supporto preconfigurato per l'ultima versione di Bootstrap, l'eccezionale framework CSS reattivo open source che occupa molto del web.

Yii Application Architecture

Una delle funzionalità più importanti di Yii Framework è che fornisce un controller di visualizzazione modello per PHP. Ciò non solo fornisce un ambiente di programmazione più strutturato e un codice più semplice da comprendere, ma semplifica una serie di cose difficili da fare in PHP, come la sicurezza e la generazione automatica di codice. Rende anche il nostro codice più facile da estendere e più riutilizzabile.

Con un'applicazione Yii, indirizziamo tutto il traffico verso un singolo file: /web/index.php file. Questo file integrato carica Yii, eventuali dipendenze e quindi esegue l'applicazione.

correre(); 

Per impostazione predefinita, questo è il metodo Indice in /controllers/SiteController.php:

funzione pubblica actionIndex () return $ this-> render ('index'); 

Generalmente, i controller sono pieni di metodi, ma con un codice minimo come sopra. I controllori gestiscono l'accesso, sfruttano i modelli e visualizzano le visualizzazioni. La maggior parte dell'intelligenza dovrebbe essere incorporata nei tuoi modelli e le viste dovrebbero generalmente produrre operazioni di template relativamente semplici.

Di default, Yii renderizza /views/layouts/main.php attorno alla vista indice in /views/site/index.php. Il main.php layout fornisce la struttura HTML e CSS alla pagina, ad es. la barra degli strumenti e l'area del contenuto. Dentro main.php, vedrai una breve chiamata al contenuto:

isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?>

Quello $ content la variabile verrà sostituita con il codice generato da /views/site/index.php, che attualmente è un codice HTML statico che genera il Congratulazioni! pagina mostrata sopra.

Costruire Hello World!

Attivare Pretty URLs

Innanzitutto, abilitiamo gli URL graziosi di Yii2 con mod_rewrite. Nella home page di Yii, se si fa clic su Di opzione di menu, l'URL sarà simile a http: // localhost: 8888 / ciao / web / index.php? r = site% 2Fabout. Ci piacerebbe cambiarlo in http: // localhost: 8888 / hello / web / site / about.

Il config la sottodirectory include le configurazioni dell'ambiente per le tue applicazioni web e console e le future impostazioni del database. modificare /config/web.php aggiungere urlManagement all'attuale applicazione Web. Aggiungi il seguente urlManager sezione all'interno dell'array dei componenti:

 'components' => [// ... 'urlManager' => ['showScriptName' => false, 'enablePrettyUrl' => true], // ... 'request' => [

Quindi, crea un .htaccess file all'interno /web dove il primario index.php il file esiste:

RewriteEngine on # Se esiste una directory o un file, utilizzalo direttamente RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Altrimenti inoltralo a index.php RewriteRule. index.php

Assicurarsi mod_rewrite è in esecuzione localmente su MAMP; in caso contrario, consulta questa guida sull'overflow dello stack.

Nel tuo browser, visita questo URL: http: // localhost: 8888 / ciao / web / site / about. Dovresti vedere l'applicazione Yii Informazioni sulla pagina e fare clic su altre opzioni di menu dovrebbero far apparire piuttosto URL.

Costruire il Say Hello World! Azione

Successivamente, aggiungeremo un'azione di controller chiamata Dire per ripetere un messaggio target di nostra scelta. Nel /controllers/SiteController.php, aggiungi la seguente azione:

public function actionSay ($ target = 'World') return $ this-> render ('say', ['target' => $ target]);  

Questo cercherà un parametro URL chiamato target da echo sullo schermo. Se non ci sono parametri target, dirà ripetere "World". In Yii, le azioni sono definite come un metodo chiamato con il prefisso "azione" seguito dal nome dell'azione. In questo SiteController classe, noi usiamo azione pubblica azioneSay. Yii usa il prefisso "azione" per differenziare i metodi di azione da altri metodi.

Il comportamento predefinito del metodo di rendering cercherà un file in views / ControllerID / ViewName.php. Così, in / Views / site /, creare un say.php vedi il file:

 

Ciao

Benvenuto nella tua applicazione dimostrativa Yii2.

Questo è il file di visualizzazione del modello per ripetere il tag HTML statico h1 con Ciao seguito dalla variabile di destinazione. Nota: codifichiamo la variabile di destinazione per proteggere l'argomento dei parametri URL da codice dannoso.

Se visiti l'url, http: // localhost: 8888 / ciao / web / site / say? Target = Tuts% 20Reader, dovresti vedere questo:

Questo è un esempio molto semplice di Yii2 Model View Controller. Puoi leggere una descrizione più approfondita della dimostrazione Hello World e Yii2 MVC qui.

Ora, impostiamo la nostra applicazione con GitHub e la distribuiamo su un server di produzione. 

Impostazione dell'ambiente di hosting remoto

L'applicazione di base di Yii dovrebbe funzionare senza problemi con Apache o Nginx, fornirò le istruzioni per Apache e puoi trovare le istruzioni per Nginx qui.

Crea un repository su GitHub

Una volta impostato un modello di applicazione Yii, creo un repository su Github:

Nota: È inizialmente più semplice copiare e incollare il file Yii2 .gitignore da GitHub al tuo file ~ / Sites / hello / .gitignore locale piuttosto che creare il sito con esso in remoto e doverlo unire localmente, ma entrambi gli approcci vanno bene.

Ho usato l'app GitHub di Mac OS X più frequentemente, ma puoi anche usare la riga di comando per inizializzare il repository. Di seguito, seguo le istruzioni per aggiungere un progetto esistente a GitHub utilizzando la riga di comando (sostituisci "tuoaccount" con il nome dell'account GitHub):

cd ~ / Sites / ciao git init git commit -m "primo commit di hello world per yii2" git remote aggiungi origine [email protected]: youraccount / hello.git git push -u origine master

Configura un sito Apache sul tuo server

Se non si dispone già di un server LAMP o di un'istanza cloud, seguire le istruzioni di installazione di Ubuntu generiche per iniziare. Una volta che hai il tuo indirizzo IP, modifica i tuoi record DNS per avere un punto record A sul tuo server. 

tuodominio.com A 192.161.234.17

Quindi, accedi al tuo server tramite indirizzo IP o nome di dominio:

ssh [email protected]

Aggiorna la configurazione, installa Git, abilita mod_rewrite per Apache e mcrypt per PHP:

sudo apt-get update sudo apt-get upgrade sudo a2enmod riscrive php5enmod mcrypt

Configura GitHub Access sul server remoto

Ora, imposteremo un utente per estrarre codice da Github che può essere servito da Apache. Innanzitutto, installa git sul tuo server.

sudo apt-get install git 

Quindi, creeremo un gruppo per www, aggiungiamo utenti www-data e GitHub ad esso e gli garantiamo la proprietà delle nostre directory web.

adduser github addgroup www adduser github www adduser www-data www chown -R: www / var / www chmod + s -R / var / www chmod -vR g + w / var / www /

Successivamente, creiamo una chiave per l'utente che condividiamo con GitHub per mantenere il codice sincronizzato:

su github ssh-keygen -t rsa -C "[email protected]" esci cat /home/github/.ssh/id_rsa.pub

Vedrai qualcosa di simile a questo, che devi copiare e incollare su GitHub.com:

Visita la pagina Impostazioni per il tuo repository GitH Soundub sotto le chiavi e aggiungi questa chiave al tuo repository:

Dopo averlo aggiunto, lo vedrai elencato qui:

Infine, puoi clonare l'albero sul tuo server di produzione:

git clone [email protected]: youraccount / hello.git / var / www / hello

Se l'accesso a GitHub è configurato correttamente, dovrebbe apparire come questo (in caso contrario, rivedere questo):

Man mano che estendi il codebase con questa serie di tutorial e spinga gli aggiornamenti dal tuo computer locale, sarai in grado di sincronizzarli sul tuo server di produzione remoto con git pull. Questo è più semplice che tirare giù un tarball o sincronizzare il codice manualmente - e diventerà più utile in quanto questa serie di tutorial continua con i moduli successivi.

Creare la configurazione del sito Apache

Creare un file di configurazione del sito Apache:

nano /etc/apache2/sites-available/hello.conf

Personalizza questa configurazione per il tuo nome di dominio:

 ServerName yourdomain.com # Imposta la radice del documento come "base / web" DocumentRoot "/ var / www / hello / 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   

Abilita il tuo sito:

a2ensite hello.conf a2dissite 000-default.conf service apache2 reload

Visita http://yourdomain.com/site/say?target=World! e dovresti vedere la tua applicazione in esecuzione sul tuo dominio senza la barra di debug di Yii2 in basso in questo modo:

Congratulazioni! Siamo ora pronti per esplorare funzionalità più sofisticate in Yii2. Se vuoi sapere quando arriverà il prossimo tutorial di Yii2, segui @tutspluscode o @reifman su Twitter o controlla la mia pagina dell'autore. La mia pagina dell'autore includerà tutti gli articoli di questa serie subito dopo la pubblicazione.

Se hai domande o correzioni su questo tutorial, per favore pubblicale nei commenti.

Link correlati

  • Sito Web di Yii Framework
  • Introduzione al framework Yii (Tuts +) 
  • Altri esempi di programmazione Yii gratuiti e open source dell'autore
  • Utili script PHP su Envato Market