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.
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
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
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.
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.
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:
= Breadcrumbs::widget([ 'links' => isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?> = $content ?>
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.
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.
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 = Html::encode($target) ?>
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.
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.
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
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
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 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.