Slik programmerer du med Yii2 Bruk avansatt applikasjonsmal

Hva du skal skape

Hvis du spør, "Hva er Yii?" Sjekk ut Introduksjon til Yii Framework, som vurderer fordelene med Yii og inneholder en oversikt over Yii 2.0.

I denne programmeringen med Yii2-serien, veileder jeg lesere i bruk av Yii2 Framework for PHP. Når du begynner å bruke Yii for ekte utvikling, vil du kanskje starte ditt neste prosjekt med sin avanserte applikasjonsmal. Blant annet gir den integrerte brukeradministrasjonsfunksjoner, samt to applikasjoner, en for forbrukervendt frontend og den andre en administrativ bakre ende.

I denne veiledningen vil jeg introdusere deg til Yii2 Advanced Template og veilede deg gjennom grunnleggende oppsett og bruk. Mens programmering med Yii2: Integrerer brukerregistrering utforsket implementering av brukeradministrasjon på toppen av grunnleggende mal med Yii2-brukerutvidelsen, vil denne opplæringen lansere et nytt lager med den avanserte malen i stedet for å fortsette eksempler på vår grunnleggende Yii hei kodebase. 

Før vi begynner, vær så snill og husk, jeg prøver å delta i diskusjonene nedenfor. Hvis du har et spørsmål eller et emneforslag, vennligst legg inn en kommentar nedenfor eller kontakt meg på Twitter @ reifman. Du kan også sende meg e-post direkte.

Hvis du la merke til at det har vært en forsinkelse i denne serien, er det fordi jeg nylig er tilbake fra hjernekirurgi. Takk for tålmodigheten og støtten. Det er hyggelig å skrive igjen regelmessig, og jeg ser frem til fortsatt dekning av Yii2.

Hvordan den avanserte mal er annerledes

Den mest nyttige grunnen til å migrere til den avanserte malen er for implementeringen av brukerhåndteringsfunksjoner som påmelding, pålogging, pålogging og tilbakestilling av passord.

Den avanserte malen sørger også for flere tilgangstrener for et større webprogram. Den har en front-end og back-end webapplikasjon for sluttbrukere og administratorer. Men dette kan også utvides - for eksempel for moderatorer eller en spesiell API, selv om det finnes andre måter å integrere disse funksjonene i en applikasjon.

Her er et diagram som viser de primære forskjellene mellom grunnleggende vanilje Yii og den avanserte installasjonen:

I mine nyeste opplæringsprogrammer om Yii2-brukerutvidelsen blir jeg stadig mer imponert over funksjonssettet som et alternativ til den avanserte malen. Det kan imidlertid også enkelt integreres til enten installasjon.

Det er verdt å utforske den avanserte malen før du starter et stort prosjekt. Jeg skal til å hjelpe deg med å gjøre nettopp det.

Installere den avanserte malen

La oss begynne å installere den avanserte malen med Yii2. Vi kan følge instruksjonene i det avanserte malingsprosjektet på GitHub.

Oppdaterer Komponist

Først vil vi sikre at komponisten har pakkene den trenger:

$ komponent globalt krever "fxp / composer-asset-plugin: ~ 1.0.3" Endret nåværende katalog til /Users/Jeff/.composer ./composer.json har blitt oppdatert Laster inn kompositorbeholdninger med pakkedata Oppdatere avhengigheter (inkludert krav-dev ) Ingenting å installere eller oppdatere Generere autoload-filer

Installere Yii Med den avanserte malen

Da kan vi installere Yii med den avanserte prosjektmalen. Vi ringer vår opplæringsapp yiiplus:

$ komponent create-project --prefer-dist yiisoft / yii2-app-avansert yiiplus Installere yiisoft / yii2-app-avansert (2.0.6) - Installere yiisoft / yii2-app-avansert (2.0.6) Laster fra cachen Opprett prosjekt i yiiplus Laster inn komponentbeholdere med pakkeinformasjon Installere avhengigheter (inkludert krav-dev) - Installere yiisoft / yii2-komponist (2.0.3) Laster fra cache - Installere ezyang / htmlpurifier (v4.6.0) Laster fra cache - Installere cebe / markdown 1.1.0) Laster fra cache - Installere bower-asset / jquery (2.1.4) Laster fra cache - Installere bower-asset / jquery.inputmask (3.1.63) Laster fra cache - Installere bower-asset / punycode (v1.3.2 ) Loading from cache - Installere bower-asset / yii2-pjax (v2.0.4) Laster fra cache - Installere yiisoft / yii2 (2.0.6) Laster fra cache - Installere swiftmailer / swiftmailer (v5.4.1) Laster fra cache - Installere yiisoft / yii2-swiftmailer (2.0.4) Laster fra cache - Installere yiisoft / yii2-codeception (2.0.4) Laster fra cache - Inst Aller bower-asset / bootstrap (v3.3.5) Laster fra cache - Installere yiisoft / yii2-bootstrap (2.0.5) Laster fra cache - Installere yiisoft / yii2-debug (2.0.5) Laster fra cache - Installere bower-asset / typeahead.js (v0.10.5) Laster fra cache - Installere phpspec / php-diff (v1.0.2) Laster fra cache - Installere yiisoft / yii2-gii (2.0.4) Laster fra cache - Installere fzaninotto / faker (v1.5.0 ) Laster fra cache - Installere yiisoft / yii2-faker (2.0.3) Laster fra cache Skrive låsfil Generere autoload filer

Initialisering av vår Yii-applikasjon

La oss nå initialisere applikasjonen vår: 

$ cd ~ / Nettsteder / yiiplus $ php init Yii Programmeringsinitialiseringsverktøy v1.0 Hvilket miljø vil du at programmet skal initialiseres i? [0] Utvikling [1] Produksjon Ditt valg [0-1, eller «q» for å slutte] 0 Initialiser applikasjonen under 'Utviklings'-miljø? [ja | nei] ja Start initialisering ... generer backend / config / main-local.php generer backend / config / params-local.php generer backend / web / index-test.php generer backend / web / index.php generer felles / config / main-local.php generere common / config / params-local.php generere konsoll / config / main-local.php generere konsoll / config / params-local.php generere frontend / config / main-local.php generere frontend / config / params-local.php generere frontend / web / index-test.php generere frontend / web / index.php generere yii generere cookie validering nøkkel i backend / config / main-local.php generere cookie validering nøkkel i frontend / config / main-local.php chmod 0777 backend / runtime chmod 0777 backend / web / assets chmod 0777 frontend / runtime chmod 0777 frontend / web / eiendeler chmod 0755 yii chmod 0755 test / kodepsjon / bin / yii ... initialisering fullført.

Forbered databasen

Deretter bruker jeg MAMPs installerte versjon av PHPMyAdmin for å lage databasen:

Klikk Skape. Tar skjermbilder for opplæringen, jeg glemte å klikke opprette og så lurte på hvorfor jeg ikke kunne migrere databasen min - det eksisterte ikke ennå.

Deretter redigerer /common/config/main-local.php for å inkludere databasens innstillinger:

 ['db' => 'yii \ db \ Tilkobling', 'dsn' => 'mysql: vert = localhost; dbname = yiiplus', 'brukernavn' => 'root', 'passord' = > '-localmysqldevpwd-', 'charset' => 'utf8',], 'mailer' => [ 

Da er du klar til å kjøre databasemigrasjonen for å initialisere søknaden din. Dette oppretter først og fremst tabellen for brukeradministrasjon:

$ ./yii migrere Yii Migreringsverktøy (basert på Yii v2.0.6) Opprette Migration History Table "Migrering" ... Ferdig. Totalt 1 ny migrasjon som skal brukes: m130524_201442_init Bruk overføringen ovenfor? (ja | nei) [nei]: ja *** bruker m130524_201442_init> opprett tabell % user ... ferdig (tid: 0.007s) *** anvendt m130524_201442_init (tid: 0.022s) Migrert opp. 

Konfigurere Apache for Front-End og Back-End Sites

Når vi konfigurerer vårt utviklings- eller produksjonsmiljø med den avanserte malen, må vi peke webserveren til en annen rutebane, to faktisk. 

Først vil vi redigere vår vertsfil for å inkludere frontend.dev og backend.dev:

$ mer / etc / verter 127.0.0.1 localhost 127.0.0.1 frontend.dev 127.0.0.1 backend.dev

I mitt utviklingsmiljø med MAMP, knytter jeg min yiiplus-katalog til MAMPs htdocs:

 $ cd / Programmer / MAMP / htdocs / $ ln -s ~ / Nettsteder / yiiplus / Programmer / MAMP / htdocs / yiiplus

Deretter aktiverer jeg (ikke-godkjent) inkluderingen for virtuelle verter:

$ nano /Applications/MAMP/conf/apache/httpd.conf # Virtuelle verter inkluderer /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Og konfigurer baner for hvert av tjenernavnene mine:

$ nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf NameVirtualHost *: 8888  Servernavn frontend.dev DocumentRoot / Applications / MAMP / htdocs / yiiplus / frontend / web /  # bruk mod_rewrite for ganske nettadressestøtte RewriteEngine on # Hvis en katalog eller en fil eksisterer, bruk forespørselen direkte RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Ellers videresend forespørselen til index.php RewriteRule. index.php # bruk index.php som indeksfil DirectoryIndex index.php # ... andre innstillinger ...    Servernavn backend.dev DocumentRoot / Applications / MAMP / htdocs / yiiplus / backend / web /  # bruk mod_rewrite for ganske nettadressestøtte RewriteEngine on # Hvis en katalog eller en fil eksisterer, bruk forespørselen direkte RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Ellers videresend forespørselen til index.php RewriteRule. index.php # bruk index.php som indeksfil DirectoryIndex index.php # ... andre innstillinger ...  

Når det er ferdig, her er hva front-end nettstedet vil se ut på http://frontend.dev:8888:

Tilbakestillingsstedet vil be om at du logger inn - det er for administratorer:

Utforske brukeradministrasjon

Nå skal jeg gå deg gjennom de grunnleggende brukeradministrasjonsfunksjonene i den avanserte malen. Men først må vi sikre at vi mottar e-post fra Yii i vårt utviklingsmiljø.

Konfigurere e-postlevering

Brukeradministrasjon sender e-post for tilbakestilling av passord, så vi må aktivere Yiis SwiftMailer SMTP-konfigurasjon. Jeg skal bruke Mailtrap.io, som jeg utforsket i en tidligere opplæring, Introduksjon til Mailtrap: En falsk SMTP-server for førproduksjonstesting av applikasjons-e-post.

Mailtrap tilbyr en falsk SMTP-server for utviklingslaget ditt for å teste, vise og dele e-postmeldinger sendt fra preproduksjonsmiljøene og teste med ekte data uten risiko for å spammere virkelige kunder. For mange utviklingsoppgaver vil det være gratis å bruke Mailtrap.

I hovedsak må du registrere deg for Mailtrap og sende all din pre-produksjon miljø e-post via din falske Mailtrap SMTP-server. Her er et kort videooversikt av Mailtrap by Railsware:

Hvis du følger opplæringen og oppretter en Mailtrap-konto, ser du demo-innboksen din:

Og når du klikker på Innstillinger-ikonet i innbokslisten, ser du at hver Mailtrap-innboks har sin egen SMTP-server-legitimasjon:

Med Yii oppdaterer jeg SwiftMailer SMTP-innstillingene i /common/config/main-local.php. Slik ser det ut:

 'mailer' => ['class' => 'yii \ swiftmailer \ Mailer', 'viewPath' => '@ vanlig / mail', 'useFileTransport' => false, 'transport' => ['class' => ' Swift_SmtpTransport ',' host '=>' mailtrap.io ',' brukernavn '=>' 29xxxxxxxxxxx72 ',' passord '=>' 2c3xxxxxxxxxxf5 ',' port '=>' 2525 ',' kryptering '=>' tls ' ],],

Merk at hvis du ikke tilpasser viewPath som vist ovenfor, kan det hende at du får en feil rundt e-postmallfilene som ikke blir funnet.

Registrering og registrering

Slik ser skjermbildet for front-end-registrering ut:

Det vil lande deg på hjemmesiden i innlogget tilstand:

Logg inn

Her er påloggingsskjermen:

Glemt passordet

Og her er det Glemt passordet skjerm:

Hvis du ber om et nytt passord, finner du det innen Mailtrap:

Hva blir det neste?

Du vil kanskje sjekke ut Bygg opp din oppstart med PHP-serien, som bruker Yii2s avanserte mal. Hvis du er interessert i å integrere denne opplæringen med Yii2 User, kan du også sjekke ut veiledningen for å integrere Yii2-brukeren med den avanserte malen og Google-godkjenning (kommer snart).

Jeg håper du har likt å lære om Yii2 Advanced Application Template. Jeg vil være nysgjerrig på å høre tilbakemeldingen din i kommentarene om hvorvidt du foretrekker det til grunnleggende mal.

Se etter kommende opplæringsprogrammer i min programmering med Yii2-serien når jeg fortsetter å dykke inn i ulike aspekter av rammen. Jeg aksepterer funksjon og emneforespørsler. Du kan legge inn dem i kommentarene under eller sende meg en e-post på Lookahead Consulting.

Hvis du vil vite når neste Yii2 opplæring kommer, følg meg @ reifman på Twitter eller sjekk min instruktørside. Min instruktørside vil inkludere alle artiklene fra denne serien så snart de er publisert. 

  • Yii2 Avansert mal
  • Yii2 Developer Exchange
  • En samling av Yii-baserte skript på CodeCanyon