Om du frågar, "Vad är Yii?" checka ut Introduktion till Yii Framework, som granskar fördelarna med Yii och innehåller en översikt över Yii 2.0.
I denna programmering med Yii2-serien guidar jag läsare som använder Yii2 Framework for PHP. När du börjar använda Yii för verklig utveckling kanske du vill starta ditt nästa projekt med sin avancerade applikationsmall. Bland annat tillhandahålls integrerade användarhanteringsfunktioner samt två applikationer, en för den konsumentvända fronten och den andra en administrativ bakre ände.
I denna handledning introducerar jag dig till Yii2 Advanced Template och guidar dig genom grundläggande inställning och användning. Medan programmering med Yii2: Integrerande användarregistrering undersökt implementering av användarhantering ovanpå den grundläggande mallen med Yii2-användarutvidgningen, kommer denna handledning att starta ett nytt förråd med den avancerade mallen istället för att fortsätta exemplen på vår grundläggande Yii hello codebase.
Innan vi börjar, kom ihåg, jag försöker delta i diskussionerna nedan. Om du har en fråga eller ett ämnesförslag, vänligen skriv en kommentar nedan eller kontakta mig på Twitter @ reifman. Du kan också maila mig direkt.
Om du märkte att det har varit en fördröjning i denna serie beror det på att jag nyligen är tillbaka från hjärnkirurgi. Tack för ditt tålamod och stöd - det är trevligt att skriva regelbundet igen, och jag ser fram emot att fortsätt att täcka Yii2.
Den mest användbara orsaken att migrera till den avancerade mallen är för dess implementering av användarhanteringsfunktioner som inloggning, inloggning, utloggning och återställning av lösenord..
Den avancerade mallen ger också flera åtkomstträd för en större webbapplikation. Den har en front-end och back-end webbapplikation för slutanvändare och administratörer. Men det kan också utökas, till exempel för moderatorer eller ett speciellt API, men det finns andra sätt att integrera dessa funktioner i en applikation.
Här är ett diagram som visar de primära skillnaderna mellan grundläggande vanilj Yii och den avancerade installationen:
I mina senaste handledning om Yii2-användarutökningen blir jag alltmer imponerad av dess funktionsuppsättning som ett alternativ till den avancerade mallen. Det kan dock också enkelt integreras i endera installationen.
Det är värt att utforska den avancerade mallen innan du påbörjar ett större projekt. Jag ska hjälpa dig att göra just det.
Låt oss börja med att installera den avancerade mallen med Yii2. Vi kan följa anvisningarna i det avancerade mallprojektet på GitHub.
Först ska vi se till att kompositören har de paket som den behöver:
$ composer globalt kräver "fxp / composer-asset-plugin: ~ 1.0.3" Ändrad aktuell katalog till /Users/Jeff/.composer ./composer.json har uppdaterats Laddar kompositregister med paketinformation Uppdatering av beroenden (inklusive krav-dev ) Inget att installera eller uppdatera Generera autoload-filer
Då kan vi installera Yii med den avancerade projektmallen. Vi ringer till vår handledningsprogram yiiplus:
$ composer create-project --prefer-dist yiisoft / yii2-app-avancerad yiiplus Installera yiisoft / yii2-app-advanced (2.0.6) - Installera yiisoft / yii2-app-advanced (2.0.6) Laddar från cachen Skapat projekt i yiiplus Laddar kompositarkataloger med paketinformation Installera beroenden (inklusive krav-dev) - Installera yiisoft / yii2-kompositör (2.0.3) Laddar från cache - Installera ezyang / htmlpurifier (v4.6.0) Laddar från cache - Installera cebe / markdown 1.1.0) Laddar från cache - Installera bower-asset / jquery (2.1.4) Laddar från cache - Installera bower-asset / jquery.inputmask (3.1.63) Laddar från cache - Installera bower-asset / punycode (v1.3.2 ) Laddar från cache - Installera bower-asset / yii2-pjax (v2.0.4) Laddar från cache - Installera yiisoft / yii2 (2.0.6) Laddar från cache - Installera swiftmailer / swiftmailer (v5.4.1) Laddar från cache - Installera yiisoft / yii2-swiftmailer (2.0.4) Laddar från cache - Installera yiisoft / yii2-codeception (2.0.4) Laddar från cache - Inst alltså bower-asset / bootstrap (v3.3.5) Laddar från cache - Installera yiisoft / yii2-bootstrap (2.0.5) Laddar från cache - Installera yiisoft / yii2-debug (2.0.5) Laddar från cache - Installera bower-asset / typahead.js (v0.10.5) Laddar från cache - Installera phpspec / php-diff (v1.0.2) Laddar från cache - Installera yiisoft / yii2-gii (2.0.4) Laddar från cache - Installera fzaninotto / faker (v1.5.0 ) Laddar från cache - Installera yiisoft / yii2-faker (2.0.3) Laddar från cache Skriva låsfil Generera autoload-filer
Nu, låt oss initiera vår ansökan:
$ cd ~ / Sites / yiiplus $ php init Yii Ansökningsinitialiseringsverktyg v1.0 Vilken miljö vill du att programmet ska initieras i? [0] Utveckling [1] Produktion Ditt val [0-1 eller "q" för att sluta] 0 Initialisera programmet under "Utvecklings" -miljö? [ja nej] ja Börja initialisering ... generera backend / config / main-local.php generera backend / config / params-local.php generera backend / web / index-test.php generera backend / web / index.php generera vanliga / config / main-local.php generera common / config / params-local.php generera konsol / config / main-local.php generera konsol / config / params-local.php generera frontend / config / main-local.php generera frontend / config / params-local.php generera frontend / web / index-test.php generera frontend / web / index.php generera yii generera cookie validering nyckel i backend / config / main-local.php generera cookie validering nyckel i frontend / config / main-local.php chmod 0777 backend / runtime chmod 0777 backend / web / tillgångar chmod 0777 frontend / runtime chmod 0777 frontend / web / tillgångar chmod 0755 yii chmod 0755 test / codeception / bin / yii ... initialisering slutförd.
Därefter använder jag MAMPs installerade version av PHPMyAdmin för att skapa databasen:
Klick Skapa. Med skärmdumpar för handledningen glömde jag att klicka på Skapa och undrade varför jag inte kunde migrera min databas - den fanns inte än.
Därefter redigera /common/config/main-local.php för att inkludera dina databasinställningar:
['db' => 'yii \ db \ Anslutning', 'dsn' => 'mysql: värd = localhost; dbname = yiiplus', 'användarnamn' => 'root', 'lösenord' = > '-localmysqldevpwd-', 'charset' => 'utf8',], 'mailer' => [
Då är du redo att köra databas migreringen för att initiera din ansökan. Detta skapar i första hand tabellen för användarhantering:
$ ./yii migrera Yii-migreringsverktyget (baserat på Yii v2.0.6) Skapa migrationshistorikbordet "migrering" ... Klar. Totalt 1 ny migration som ska tillämpas: m130524_201442_init Använd ovanstående migrering? (ja | nej) nej: ja *** tillämpa m130524_201442_init> skapa bord % user ... gjort (tid: 0.007s) *** tillämpas m130524_201442_init (tid: 0.022s) Migrerad framgångsrikt.
När vi konfigurerar vår utvecklings- eller produktionsmiljö med den avancerade mallen måste vi peka på webbservern till en annan rotbana, två faktiskt.
Först ska vi redigera vår hosts-fil för att inkludera frontend.dev och backend.dev:
$ mer / etc / hosts 127.0.0.1 localhost 127.0.0.1 frontend.dev 127.0.0.1 backend.dev
I min utvecklingsmiljö med MAMP kopplar jag min yiiplus-katalog till MAMPs htdocs:
$ cd / Program / MAMP / htdocs / $ ln -s ~ / Sites / yiiplus / Program / MAMP / htdocs / yiiplus
Sedan aktiverar jag (okomment) innehållet för virtuella värdar:
$ nano /Applications/MAMP/conf/apache/httpd.conf # Virtuella värdar inkluderar /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Och konfigurera sökvägar för var och en av mina servernamn:
$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf NameVirtualHost *: 8888ServerName frontend.dev DocumentRoot / Applications / MAMP / htdocs / yiiplus / frontend / 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 # använd index.php som indexfil DirectoryIndex index.php # ... andra inställningar ... ServerName backend.dev DocumentRoot / Applications / MAMP / htdocs / yiiplus / backend / 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 # använd index.php som indexfil DirectoryIndex index.php # ... andra inställningar ...
När det är klart, här är vad front-end-webbplatsen kommer att se ut på http://frontend.dev:8888:
Back-end-webbplatsen kommer att begära att du loggar in - det är för administratörer:
Nu ska jag gå igenom de grundläggande användarhanteringsfunktionerna i den avancerade mallen. Men först måste vi se till att vi tar emot e-post från Yii i vår utvecklingsmiljö.
Användarhantering skickar e-post för återställning av lösenord, så vi måste aktivera Yiis SwiftMailer SMTP-konfiguration. Jag ska använda Mailtrap.io, som jag undersökte i en tidigare handledning, Introduktion till Mailtrap: En falsk SMTP-server för förproduktionstestning av ansökningsadress.
Mailtrap tillhandahåller en falsk SMTP-server för ditt utvecklingsteam för att testa, visa och dela e-postmeddelanden som skickats från förproduktionsmiljöer och testa med reella data utan risk för spammning av riktiga kunder. För många utvecklingsuppgifter är det gratis att använda Mailtrap.
I huvudsak registrerar du dig för Mailtrap och skickar all din förproduktionsmiljö via e-post via din falska Mailtrap SMTP-server. Här är en kort videoöversikt av Mailtrap by Railsware:
Om du följer handledningen och skapar ett Mailtrap-konto ser du din demo-inkorg:
Och när du klickar på ikonen Inställningar i inkorgslistan ser du att varje Mailtrap-inkorg har sina egna SMTP-serveruppgifter:
Med Yii uppdaterar jag SwiftMailer SMTP-inställningarna i /common/config/main-local.php. Så här kan det se ut:
'mailer' => ['class' => 'yii \ swiftmailer \ Mailer', 'viewPath' => '@ vanlig / mail', 'useFileTransport' => false, 'transport' => ['class' => ' Swift_SmtpTransport ',' host' => 'mailtrap.io', 'username' => '29xxxxxxxxxxx72', 'lösenord' => '2c3xxxxxxxxf5', 'port' => '2525', 'kryptering' => 'tls' ],],
Observera att om du inte anpassar viewpath
som visas ovan kan det hända att du stöter på en bugg runt de e-postmallfiler som inte hittas.
Så här ser den främre registreringsskärmen ut:
Det kommer att landa dig på hemsidan i inloggad stat:
Här är inloggningsskärmen:
Och här är det Glömt ditt lösenord skärm:
Om du ber om ett nytt lösenord hittar du det inom Mailtrap:
Du kanske vill kolla in min Building Your Startup With PHP-serie, som använder Yii2s avancerade mall. Om du är intresserad av att integrera denna handledning med Yii2 User, kolla även guiden för att integrera Yii2 User med den avancerade mallen och Google-autentisering (kommer snart).
Jag hoppas att du har haft lärt dig om Yii2 Advanced Application Template. Jag skulle vara nyfiken på att höra din feedback i kommentarerna om huruvida du föredrar det till grundmallen.
Titta på kommande handledningar i min programmering med Yii2-serien när jag fortsätter att dyka in i olika aspekter av ramen. Jag välkomnar funktion och ämnesförfrågningar. Du kan skicka in dem i kommentarerna nedan eller maila mig på min Lookahead Consulting webbplats.
Om du vill veta när nästa Yii2 handledning kommer, följ mig @ reifman på Twitter eller kolla min instruktörssida. Min instruktörssida kommer att innehålla alla artiklar från denna serie så snart de publiceras.