Denna handledning kommer att gå dig genom att installera Yii 2.0, konfigurera din lokala utvecklingsmiljö, bygga ett enkelt Hello World-program, konfigurera din fjärranslutna produktionsmiljö för att värd och distribuera din kod från ett GitHub-arkiv.
Här hittar du detaljerade installationsanvisningar. Jag går igenom grunderna för en typisk utvecklingsmiljö för Mac OS X. Yii 2.0 har en slutgiltig guide (PDF) och en klassreferens som täcker alla detaljer i Yii. ca
Yii2 kräver Composer, en populär dependence manager för PHP. Om du inte redan har Composer installerat gör du följande:
curl -s http://getcomposer.org/installer | php mv kompositör.phar / usr / local / bin / composer
Använd sedan Kompositör för att installera Yii2. Installationsbegäran kräver att du använder ditt eget Github-kontouppgifter registrera dig om du inte har ett konto.
Låt oss kalla det här första projektet, "hej":
cd ~ / Sites kompositör globalt kräver "fxp / composer-asset-plugin: 1.0.0-beta2" kompositör skapa -projekt --prefer-dist yiisoft / yii2-app-basic hej
Yii2 ger två olika installationsmallar beroende på vilken typ av applikation du utvecklar: grundläggande och avancerat. För den här handledningen använder vi den grundläggande applikationen som är installerad som standard. Den avancerade applikationsmallen ger en front-end, back-end och konsol åtkomstpunkter för en mer avancerad webbapplikation, som ett WordPress-blogg, det är administrativ kontrollpanel och bakgrunds-cron-uppgifter.
Jag använder gratis, öppen källkod MAMP för OS X för min LAMP-utveckling. Se till att MAMP körs och dess webb- och databasservrar är aktiva. Skapa sedan en symlink för MAMP till din webbplatser
app katalog:
cd / applikationer / MAMP / htdocs ln -s ~ / webbplatser / hej / / applikationer / MAMP / htdocs / hej
Besök sedan http: // localhost: 8888 / hej / web. Du bör se Yii2 grundläggande applikationsmallen som körs med Bootstrap 3.x.
Den sidan kommer sannolikt att excitera Yii 1.1-utvecklare som inte har förkonfigurerat stöd för den senaste versionen av Bootstrap, den enastående öppen källkod-responsiv CSS-ram som tar över ganska lite av webben.
En av de viktigaste funktionerna i Yii Framework är att det ger en modellvisningskontroll för PHP. Detta ger inte bara en mer strukturerad programmeringsmiljö och enklare att förstå kod, det förenklar ett antal saker som är svåra att göra i PHP, som säkerhet och automatisk kodgenerering. Det gör också vår kod lättare att utvidga och mer återanvändbar.
Med en Yii-applikation riktar vi all trafik till en enda fil: /web/index.php
fil. Den här inbyggda filen laddar Yii, eventuella beroenden och kör sedan din ansökan.
springa();
Som standard är indexmetoden i /controllers/SiteController.php
:
public function actionIndex () return $ this-> render ('index');
Generellt är styrenheterna fulla av metoder, men med minimal kod som ovan. Controllers hanterar åtkomst, hävstångsmodeller och gör synpunkter. Huvuddelen av intelligens ska byggas in i dina modeller och åsikterna ska generellt producera relativt enkla malloperationer.
Som standard kommer Yii att göra /views/layouts/main.php
runt din indexvy i /views/site/index.php
. De main.php
Layouten ger HTML- och CSS-strukturen till sidan, t.ex. verktygsfältet och innehållsområdet. Inuti main.php
, Du får se ett kort samtal till innehållet:
= Breadcrumbs::widget([ 'links' => isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?> = $content ?>
Den där $ innehåll
variabel kommer att ersättas med den genererade koden från /views/site/index.php
, som för närvarande är statisk HTML-kod som genererar Grattis! sidan som visas ovan.
Låt oss först aktivera Yii2s vackra webbadresser med mod_rewrite
. På Yii hemsida, om du klickar på Handla om menyalternativet kommer webbadressen att vara något som http: // localhost: 8888 / hej / web / index.php? r = site% 2Fabout. Vi skulle vilja ändra det till http: // localhost: 8888 / hej / web / site / about.
De config
Underkatalog innehåller miljökonfigurationer för dina webb- och konsolprogram samt de framtida databasinställningarna. Redigera /config/web.php
tillägga urlManagement
till den aktuella webbapplikationen. Lägg till följande urlManager
sektion inom komponenterna array:
'components' => [// ... 'urlManager' => ['showScriptName' => false, 'enablePrettyUrl' => true], // ... 'request' => [
Skapa sedan en .htaccess
fil inom /webb
var den primära index.php
fil existerar:
RewriteEngine on # Om en katalog eller en fil finns, använd den direkt RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Annars vidarebefordra den till index.php RewriteRule. index.php
Se till mod_rewrite
körs lokalt på MAMP; Om inte, kolla in denna Stack Overflow guide.
I din webbläsare besöker du den här webbadressen: http: // localhost: 8888 / hej / web / site / about. Du bör se Yii-applikationen Om sidan och klicka på andra menyalternativ ska hämta söta webbadresser.
Därefter lägger vi till en kontrollerad åtgärd som heter Säga
att upprepa ett målmeddelande som vi väljer. I /controllers/SiteController.php
, lägg till följande åtgärd:
public function actionSay ($ target = 'World') return $ this-> render ('say', ['target' => $ mål]);
Detta kommer att leta efter en URL-parameter som kallas målet att echo till skärmen. Om det inte finns någon målparameter, kommer det att säga repetera "World". I Yii definieras åtgärder som en metod som heter prefixet "action" följt av åtgärdsnamnet. I denna SiteController
klass, vi använder public function actionSay
. Yii använder prefixet "action" för att differentiera åtgärdsmetoder från andra metoder.
Standardbeteendet för renderingsmetoden kommer att leta efter en fil i views / ControllerID / ViewName.php
. Så i / Views / site /
, skapa en say.php
visa fil:
Hej = Html::encode($target) ?>
Välkommen till din Yii2 demonstration ansökan.
Det här är mallvyfilen för att upprepa statisk HTML-tagg h1
med Hej följd av målvariabeln. Obs! Vi kodar målvariabeln för att säkra URL-parameterargumentet från skadlig kod.
Om du besöker webbadressen http: // localhost: 8888 / hej / web / site / say? Target = Tuts% 20Readers, du borde se detta:
Det är ett mycket grundläggande exempel på Yii2 Model View Controller. Du kan läsa igenom en mer noggrann beskrivning av Hello World-demonstrationen och Yii2 MVC här.
Nu, låt oss ställa in vår ansökan med GitHub och distribuera den till en produktionsserver.
Den grundläggande Yii-applikationen ska fungera bra ut ur rutan med Apache eller en Nginx, jag ska ge instruktioner för Apache och du kan hitta instruktioner för Nginx här.
När jag har skapat en Yii-programmall skapar jag ett förråd på Github:
Notera: Det är lite enklare att börja med kopiera och klistra in Yii2. Gitignore från GitHub till din lokala ~ / Sites / hej / .gitignore-fil istället för att skapa webbplatsen med den på distans och måste slå den samman lokalt, men antingen är det bra.
Jag har använt Mac OS X GitHub-appen oftare, men du kan också använda kommandoraden för att initialisera förvaret. Nedan följer jag anvisningarna för att lägga till ett befintligt projekt till GitHub med kommandoraden (ersätt "youraccount" med ditt GitHub-kontonamn):
cd ~ / webbplatser / hej git init git commit -m "första begå av hej världen för yii2" git fjärr lägg till ursprung [email protected]: youraccount / hello.git git push -u ursprung master
Om du inte redan har en LAMP-server eller en cloud-instans följer du mina generiska Ubuntu installationsinstruktioner för att komma igång. När du har din IP-adress, ändra dina DNS-poster för att få en A-post till din server.
yourdomain.com A 192.161.234.17
Logga sedan in på din server antingen via IP-adress eller domännamn:
ssh [email protected]
Uppdatera konfigurationen, installera Git, aktivera mod_rewrite
för Apache och mcrypt
för PHP:
sudo apt-få uppdatering sudo apt-få uppgradering sudo a2enmod skriva om php5enmod mcrypt
Nu ställer vi upp en användare för att dra kod från Github som kan serveras av Apache. Först installera git på din server.
sudo apt-get install git
Då skapar vi en grupp för www, lägger till www-data och GitHub-användare till det och ger det ägande av våra webbkataloger.
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 /
Därefter skapar vi en nyckel för användaren som vi delar med GitHub för att hålla kod synkroniserad:
su github ssh-keygen -t rsa -C "[email protected]" exit cat /home/github/.ssh/id_rsa.pub
Du ser något som detta, vilket du behöver kopiera och klistra in på GitHub.com:
Besök sidan Inställningar för ditt GitH soundub-lager under nycklar och lägg till den här nyckeln i ditt förråd:
När du har lagt till det ser du det som listas här:
Slutligen kan du klona trädet till din produktionsserver:
git klon [email protected]: youraccount / hej.git / var / www / hej
Om du är GitHub-åtkomst är korrekt konfigurerad ska den se ut så här (om inte, granska det här):
När du utökar kodbasen med den här handledningsserien och trycker uppdateringar från din lokala maskin, kan du synkronisera dem på fjärrproduktionsservern med git-dragning. Det här är enklare än att manuellt dra ner en tarball- eller synkroniseringskod - och blir mer användbar eftersom den här tutorialserien fortsätter med senare moduler.
Skapa en konfigurationsfil för Apache-webbplatsen:
nano /etc/apache2/sites-available/hello.conf
Anpassa den här konfigurationen för ditt domännamn:
Servernamn yourdomain.com # Ställ dokumentrot för att vara "basic / web" DocumentRoot "/ var / www / hello / web" # använd mod_rewrite för ganska URL-stöd RewriteEngine on # Om en katalog eller en fil finns, använd begäran direkt RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Annars vidarebefordra begäran till index.php RewriteRule. index.php
Aktivera din webbplats:
a2ensite hello.conf a2dissite 000-default.conf service apache2 reload
Besök http://yourdomain.com/site/say?target=World! och du borde se din applikation köra på din domän utan Yii2-felsökningsverktygsfältet längst ned så här:
grattis! Vi är nu redo att utforska mer sofistikerade funktioner i Yii2. Om du vill veta när nästa Yii2 handledning kommer, följ @tutspluscode eller @reifman på Twitter eller kolla min författarsida. Min författarsida kommer att inkludera alla artiklar från den här serien så snart som de publiceras.
Om du har några frågor eller korrigeringar på denna handledning, vänligen skicka in dem i kommentarerna.