relatie, activiteiten, de bouw van start: controle op de toegang tot de activiteit opgenomen en kogels,,,,,,,,,,, 21, 4 aandelen,,,,,,,, de delen van het netwerk, maandag wat In tuts + koers zal dalen tot slechts 3 dollar.Niet' dit artikel niet missen, is een reeks wordt aangeduid als "de start en PHP. Gebouwen en i18nbuilding PHP beginnen: het starten van de gebruiker, informatie PHP: plaatsing van foto 's en contactgegevens, je creëert,,,,, is dit je gebouw PHP serie + beginnen vijf delen.In deze serie, ik leid je door de start van het concept van de realiteit, het gebruik van mijn conferentie van toepassing als een echte voorbeelden.Elke stap voor stap, we zijn vrijlating van de Conferentie van de code als open source - voorbeelden van je kunnen leren.We zullen beginnen met de zaken van het adres van de problemen.,,, de code van de programma 's van de conferentie in het kader yii2 schrijven.Als je meer wilt weten over yii2, zien we de serie programmering yii2 in TUTS +, dat tijdens de les, ik breng je door meer zend kader, waardoor de bestaande lokale Management Code meer macht.We moeten de verwezenlijking van een eenvoudige toegang tot de controle op de plek om ervoor te zorgen dat alleen de gebruikers toe te voegen.We zullen het gebruik van gegevens in de relatie tussen de activiteiten, zodat de gebruiker van de index in het oog op blz. Toevoeging van plaatsen.We zullen gebruik maken van de verwezenlijking van sluggable zend gedrag URL 's vriendelijke kogels blijkt dat deze plek.We zullen wat opruimen en polijsten van rond de plaats, is gewoon een herinnering, ik niet deel te nemen aan de volgende opmerking draad.Ik bijzonder geïnteresseerd ben, als je een andere methode of meer ideeën, of als je wil aanbevelingen voor toekomstige handleiding betreft.Ik ben ook blij met de planning van de vergaderingen die de functie - eisen, de toegang tot de controle, we hebben een code te schrijven, zodat iedereen een plek, zelfs als ze niet getekend.We kunnen yii2 eenvoudig toegang te krijgen om ervoor te zorgen dat de gebruikers en log en zien waar de toevoeging. ,, yii2 biedt ook de meer geavanceerde (complexe) op basis van de rol van de access Control), zullen we niet in staat zijn om, als de gebruiker is niet geregistreerd, wanneer hij naar de Lokale pagina 's, zend de ze wordt verlegd naar de log, blz. Yii2, de ingebouwde (controle op de toegang tot de steun slechts twee standaard: de rol van de gasten (niet geregistreerd), met het oog op de "?"En en certificering, met "@".Als je geïnteresseerd bent, code ninja schreef de verlenging van de steun voor moderator en de beheerder is een goed voorbeeld van (op basis van een eenvoudige rol in de vergunning een 2) zonder het gebruik van toegangscontrole.,,, het kader kan heel eenvoudig de verwezenlijking van deze controles.We hebben nog placecontroller.php definitie van gedrag van de regels voor de toegang van elke actie, zoals de index, creëren, oog, wacht hier hebben we opnieuw de toegang tot actie, maar als je geïnteresseerd bent, zend de werkwoorden. U te beperken tot de exploitatie van de verantwoordelijke voor de verwerking optreden, op basis van een openbare functie. Behaviors () {terugkeer [V = > [type = > verbfilter:: classname (), de "actie" = > [geschrapt = >]]], ['post, "toegang" = > [type = > en een controle Op de toegang tot en de filter,:: classname (), "maar" = > [index "," tot "," create_geo ",'create_place_google", een "update",'vieW,'slug], "regels" = > [/toegestaan na verificatie van de identiteit van de gebruiker ["laat" = > echt, "de rol van" = > [']], /al dat]]];},,,, heeft ooit gezegd dat, Als op de plaats ,, menu' s, je moet worden verlegd naar die pagina:,,,,, zend nog een keer terug met de voltooiing van de toegang van de gebruikers tot de pagina 's. En, als de plaats waar we kunnen vinden voor de huidige gebruikers code:,,,:: toepassing van zend - $> gebruiker > getid (,,);,, dus in de nieuwe plek houden, ons CBijwerking van , created_by, gebied aan de gebruikers.We kunnen vertrouwen om ervoor te zorgen dat de methode voor de vaststelling van de controle op de toegang tot de verificatie van de identiteit van de gebruiker, alleen door de toegang tot openbare functies:,, actioncreate () {% mode = nieuwe plaats (); als (een model - > belasting (zend toepassing:: $> verzoek > post ())) {% vorm:: = zend voor de toepassing van het programma - > verzoekt de > post (); $model > created_by = een dollar:: toepassing van de gebruiker - > > getid (); $model > Save (); de activiteiten van de betrekkingen, registratie, wil ik de vergadering voor de planning, follow - up, de eerste het creëren van een lokale.Dit is opgeslagen in het gebied, created_by,.We willen volgen voor de gebruikers en het gebruik van hun vergaderingen, het gebruik van de frequenties, alsmede hun favoriete plek.We userplace tabel, en nu weten we dat de gebruiker is als we het creëren van een plaats waar we de betrekkingen op te vullen userplace tabel ook rij.,, in de eerste plaats, en dat we gebruik moeten maken van de Code Generator zend, Gil (http: //lokale: 8888 /mp /INDEX. Php /Gil /model) de oprichting van een model, userplace:,,,,, en toen een plek met succes is, willen we de userplace tot registratie van actieve gebruikers.Kunnen we de uitbreiding van de aftersave, zend actief is, de methode.In plaats van ons model, wordt toegevoegd:,, openbare functies aftersave ($ingevoegd, changedattributes dollar) (moeder:: aftersave ($ingevoegd, changedattributes dollar (USD); als ingevoegd) {% = nieuwe userplace; $- > toegevoegd ($- > created_by, dollar - > ID);}}, in userplace model, we voegen: ///////gebruiker, toe te voegen aan de lijst toe te voegen, openbare functies (user_id dollar place_id) {///////controleren of er, als (!Userplace:: () - > ([user_id "= > user_id dollar" place_id "= > place_id dollar]) - > bestaat () {///////of niet, de toevoeging van een nieuwe userplace dollar = USD; - > user_id = user_id dollar - >; place_id = $place_id; $- > Save ();}}, de toegang van de gebruikers tot de plaatsen, bladzijde was, we willen dat ze gebruikt, waar userplace, alleen degenen die in de tabel van de gebruikers. ,,, ik zal je vergezellen door Deze twee verschillende manieren om dat te bereiken.Ik zal yii2 ervaring. - ik ga hier de beste methode, details is nieuw voor mij.Ik dank de 亚历克斯马卡罗夫, een ontwikkeling die ook yiifeed.com zend het beheer, om hem te helpen.Hij en zend oprichter xue zijn in antwoord op de vraag van het , in verband met de training voor mijn inspanningen is nuttig.,, de simpele manier, de meest eenvoudige methode is bij de lokale. Userplace tabel, userplace.place_id eigenschap filter , userplace.user_id , en nu is het door de verificatie van de identiteit van de gebruiker. En, dit is standaard - :,, voor de controle van de openbare functies actionindex () {% naar model = nieuwe placesearch () dataprovider dollar. $= zoeken modellen - > zoeken (zend toepassing: dollar - > verzoekt > queryparams); deze terug > en (index, ["naar model" = > dollar zoeken modellen, de desbetreffende = > $dataprovider,]);}, creëren we een nieuwe methode van de controleur zei je:,,,De openbare functie actionyours () {% vraag = plaats:: () - > en ('userplaces ") - > (['user_id" = > zend toepassing:: $> gebruiker > getid (]); zoeken naar nieuwe modellen, placesearch (); dataprovider = = = = = = = = = = = = de nieuwe activedataprovider dollar (de "vraag" = > ik vraag, "piepen" = > ['pagesize "= > 10]]); deze terug > en ('yours" ["dataprovider = > $dataprovider," zoek model "= > $zoeken model]);}, aandacht moeten zijn, en ('userplaces"), is het gebruik van die betrekkingen na place.php-it vraag misschien een beetje in de war, negeer je "moet" voor:,, /* * * * * * * - zend - database, activequery @ * /openbare functieMethode getuserplaces () {terugkeer dollar - > (userplace:: classname (), ['place_id "= > de" id "]);}, gewijzigd, moeten we ook placesearch:,,,, ///////created_by toevoegen van de vereiste regels van openbare functies regels () {terugkeer [[['created_by"], "vereist"], in verband met de vraag naar de ///////de toevoeging van de zoekfunctie ($params) {% vraag = plaats:: () - > en ('user_place ") - > (['user_id" = > zend toepassing:: $> gebruiker > getid (]); $dataprovider = nieuwe activedataprovider ([vraag = > $]);,, een alternatieve methode, op een andere manier te bereiken, dit is door een userplace controleur.Immers, we zijn op de "gebruikers".In dat geval kunnen we een kleine wijziging, Gil - methode, die de verantwoordelijke voor de verwerking, de openbare functie actionindex () {% naar model van de nieuwe userplacesearch (=); $zoeken modellen - > user_id = een dollar:: toepassing van de gebruiker - > > getid ($) dataprovider dollar = zoeken. Model - > zoeken (een dollar: toepassing van > verzoekt de > queryparams); deze terug > en (index "[" naar model "= > dollar zoeken modellen, de desbetreffende = > $dataprovider,]);}, en dan in de , /oog /de plaatselijke /index. Php, hebben we behoefte aan een herziening van die banden weg en de toegang tot gegevens, bijvoorbeeld, /plaats /create_place_google:,,, < p> <?= = = = = = http: //europa.eu.int:: een (zend:: t ('frontend "," het creëren van een {} [model, het model van klasse = > de "plaats"]), [/plaats /het scheppen van], [klasse = > "knop, succesvolle])?> <?= = = = = = http: //europa.eu.int:: een (zend:: t ('frontend ", de positie van'add"), de lokale /create_geo [/], [klasse = > "knop, succesvolle])?> <?= = = = = = http: //europa.eu.int:: een (zend:: t ('frontend ",'add Google {} [model, het model van klasse = >" lokale "]), [/plaats /create_place_google], [klasse = >" knop, succesvolle])?> < /P >,, in raster van mening met betrekking tot het gebruik van de controle, we userplace van lokale stations van de laatste modellen, zoals de dollar tot de prestaties, model > lokale - > kogel,:,, <?Behandeld (= controle: [dataprovider = > de dollar /'filtermodel dataprovider "= > $zoeken modellen, in de kolom" = > [/[klasse = > zend - net serialcolumn], [de eigenschappen "=" place_name > "," formaat "= >" student "," waarde "= > de functionele (model) {terugkeer < di% GT%", model > lokale - > naam. "< /div >";},] [eigenschappen "= > de place_type" "formaat" = > "student", "waarde" = > de functionele (model) {terugkeer < div > ", model van lokale &G >T; getPlaceType ($model-> place-> place_type).'< /div> ";},], ['class'=>'yii\\grid\\ActionColumn','template'=>'{view} {update}",'buttons'=> ['view'=> de functie ($url, $model) {terug Html:: a ('< span = "glyphicon glyphicon-eye-open" > < /span> ", Yii:: getAlias ('@web').'/place/'.$model-> place-> de kogel, ['title'=> Yii:: t ('yii','View')]);},'update'=> de functie ($url, $model) {terug Html:: a ('< span =" glyphicon glyphicon-pencil "> < /span>", Yii:: getAlias ('@web').'/place/update/'.$model-> place_id, ['title'=>Een:: t ('yii "," update ")]});]]]]),,,,???????> de methode moeten veranderen, en userplace rond de kruimels van de banden en de rol van de beschikking een knop, maar is nog steeds heel eenvoudig. Als je het controleren van de code, en in deze versie, zoals je kunt zien waar de gebruikers: HTTP:// lokale: 8888 //plaats / En je mobiele telefoon HTTP:// : 8888 /mobiele /gebruikers van de plek.Interessant is om te zien hoe je kan op twee verschillende manieren om deze functie.,, slakken, activeer je mooie, zodra de URL 's op zend - kader, een model van de pagina' s zijn vaak het voorwerp van mening http://meetingplanner.com/place/692, die zei dat de id 692 object.Naast de gewone gebruikers, maar ook effectief zoekmachine.Het gebruik van zoals http://meetingplanner.com/place/caffe-seattle URL reeks beste praktijken.String wordt soms aangeduid als de kogel.Die kogel yii2 in steun in de vorm van gedrag, sluggable.Gedrag is de balans van de activiteiten van de zend een deel van de steun, die automatisch kunnen worden toegepast op gegevens het voorwerp., in ons model, dat we nog een elastische eigenschappen.Dit is hoe we het gedrag van de plaats van uitvoering sluggable model:,, openbare functies behaviors () {terugkeer [[type = > sluggablebehavior:: classname (), de eigenschappen "= >" naam "," niet "= > echt ensureunique," echt "= >,,,., zend zal ervoor zorgen dat in de, Save (), de exploitatie, de Cypriotische gebied intensieve URL 's versie van naam.Met andere woorden, als de naam van dit Huis is los snijden Audi voor koffie, stop voor koffie, Audi los snijden, om ervoor te zorgen dat de eigendom van de eeuwige. Stop nooit veranderen, zelfs niet als zijn naam is uitgegeven.Dit is voor het behoud van de banden en de referentie waar de zoekmachine, eigendom van de ensureunique., extra suffix index automatisch leidt tot een uniek kogels. , zend de automatische Code Generator, Gil meestal met een numerieke object link.We veranderen deze banden met de kogel.Hier is de code bestaat in de eerste plaats is de rol van de mazen in de kolom index blz.Je kan aanpassen van deze verbindingen, die de voorkant, //plaats /index /idee. Php:,, <?Behandeld (= controle: [dataprovider = > dollar filtermodel dataprovider "= > $zoeken modellen, in de kolom" = > [[klasse = > zend - net serialcolumn "] [naam," "eigendom" = > "place_type" "formaat" = > "student", "waarde" = > de functionele (model) {terugkeer < di% GT% ", model > getplacetype (meta - model - > place_type)." < /div > ";},] [klasse = > Zend - net actioncolumn", "model" = > "{} {} update", "knop" = > ["oog" = > de functionele ($url, model (R)Terug naar: http: //europa.eu.int: een ("< trans - type =" glyphicon glyphicon ogen open "> < Kruis >", "/". $model > kogel, [titel = > de YU 's: t ('yii "," kijk ")]);}]]]]),,,?>, andere plaatsen zijn kruimels in, zoals bijvoorbeeld:,,,,,, /receptie /standpunten /plaats /bijgewerkt. Php, we moeten de:,, <?Het gebruik van zend - assistent: //europa.eu.int /comm /PHP /; /* @ var het dollar - * * * * * * * * * * * * * * ///////web van mening @ var - model, waar de voorkant van dollar -, * * * * * * * /USD - > titel = zend:: t ('frontend "," update {}:[model, het model van klasse = > "lokale",]). "Model - > naam en de dollar - > parameters [] [] = ['breadcrumbs'label "= > de YU 's: t ('frontend", de "plaats"), URL "= > [index]]; de dollar - > parameters [] [] = ['label'breadcrumbs" = > $model > naam, URL "= > [" "," "identiteit" = > $model >]]; de dollar - > parameters [] [] = een'breadcrumbs:: t ('frontend "," update ");?>,, vervanging van mening id - code plug:,,...De dollar - > parameters [] [] = ['breadcrumbs'label "= > de YU 's: t ('frontend", de "plaats"), URL "= > [index]]; de dollar - > parameters [] [] = ['breadcrumbs'label" = > $model > de naam, de URL "= > ['slug", "stop" = > $model > stop]]; de dollar - > parameters ['breadcrumbs] [] = zend:: t ('frontend ", een" update ");...,, schoonmaken en slijpen, we. De oprichting van het plan van de conferentie zal een meter sprint, het creëren van nieuwe functies en de tijd moet worden schoongemaakt en polijsten.Dit is waarschijnlijk een herhaling van de cyclus, en ik wil op dit punt, ik wil op dit punt om dit probleem op te lossen.Natuurlijk, zal blijven opruimen voor de bouw van een code met nodig als we, met het oog op de feedback van de gebruikers en de verbetering van de produkten, de verlenging van ., navigatie, in combinatie met de yii2 en begeleiding van de aanvragen, dus je ziet er goed uit, de overeenkomstige uitpakken.Als u een navigatie - menu 's, als je opmerkingen geleid en het begrip gebruik van documenten yii2 korte - als je helpt.De Yii2 navbar widget documentatie niet dat de bijeenkomst in deze tijd.,, I 1 van de vergadering de agenda beginnen te werken. Menus navigatie met dropdown gebaseerd is op de gebruiker staat, of authenticated.. Gast,,,,, hier is de code dat aan de boven - en ik ben zeker niet de meest, waar Het als we gaan. NavBar:: de eerste (['brandLabel'=> Yii:: t ('frontend','MeetingPlanner.io') ///////'brandUrl'=> Yii:: $app-> homeUrl,'options'=> [klasse =>'navbar-inverse navbar-fixed-top',]]); als (Yii:: $app-> user-> isGuest) {$menuItems[] = ['label'=> Yii:: t ('frontend'; en'Signup'),'url'=> ['/site/signup']]; $menuItems[] = ['label'=> Yii:: t ('frontend','Login'),'url'=>[/site /register]} {%]; of menuitems = [['label "= > de YU 's: t ('frontend",'places "), URL" = > [/plaats /u]]]; [...] = [} dollar'label menu = > De YU' s: t ('frontend "," "),'items" = > [['label "= > de YU 's: t ('frontend",'learn meer "), URL" = > [/site /"]], ['label" = > Een:: t ('frontend ",'contact"), URL "= > [/site /contact]]]]; als (,,.Een dollar: toepassing van > gebruikers > isguest) {% menu 's [] = ["etikettering" = > "de rekening", "goederen" = > [["etikettering" = > de YU' s: t ('frontend ",'contact informatie"), "de URL: > [/gebruikers]], [" etikettering "= > de YU 's: t ('frontend",'logout "(" ").Een dollar: toepassing van de identiteit van de gebruiker > > - > de naam ".De URL = > [/site /annulering "]," linkoptions "= > ['data-method" = > ""]]]];}, en navigatie: ECHO: widget (["optie" = > [klasse = > "navigatie de navigatie - kolom rechts], de" projecten "= > de menu 's,]); de navigatie:: (); de validatie van het model, en terecht, voor het redden van mijn placecontroller herschrijven, het creëren van actie toe te voegen proberen we userplace relatie voor de validatie van het model. ook In sommige gevallen de ongeldige gegevens de indiening van deze betrekkingen kan worden verhoogd om het te proberen.Het zorgt er ook voor dat de gebruiker zal terugkeren naar de vriendelijke foutmelding vormen wanneer de verificatie mislukt.,, openbare functies actioncreate () {% mode = nieuwe plaats (); als (een model - > belasting (zend toepassing:: $> verzoek > post ())) {% vormen van = een:: $toepassing > verzoek > post (); als (!Is_numeric (meta - model - > place_type)) {% model > place_type = plaats:: type_other;}, model > created_by = een dollar:: toepassing van de gebruiker - > > getid (); ///////de validatie van het model (model van de regels als de vorm en de GT; valideren ()) de inbreng van alle (///////effectief zijn als model > Save (GPS); ///////adres vinden van $model (model van addlocationfromaddress > de vorming van $'place,] [] ['full_address); deze terug > heroriëntering van (["," id = > $model "> {});] of de validering niet terug van het ///////, (" > en het creëren van "[" model "= > als model.);}} {de terugkeer van een andere dollar - > en ("tot" ["model" = > $model]);}}, te voorkomen, in de eerste plaats, we creëren we een herhaling te voorkomen van de code.Overal met dezelfde naam, zoals veel starbucks koffie (veel), maar we moeten voorkomen dat de lokale productie precies twee keer koffie bij starbucks, zoals Google id of dezelfde plaats op dezelfde naam en adres, straat, zend . Voor validatie van het model, in combinatie met de ActiveForms om ons een veel werken.Hier zullen wij de definitie van de regels in het model van @inheritDoc * * * * * * * * * * * * * *:,, //openbare functie regels () {terugkeer [[[naam,'slug], [moeten], ['place_type "," staat "," created_by "," created_at "," updated_at], "de gehele" [], "naam", "google_place_id", "stop", "de website", "full_address", "in de buurt van de], 'string", "Max" = > 255], [] ['website, URL "], [] ['slug," unieke [], [...]'searchbox "," de unieke ",'targetattribute" = > de google_place_id], [[naam], "full_address, unieke", "doel" = > ["naam", "full_address]]];},,, verificatie kan worden afgedwongen op het gebied van het gebied en de nodigHet type en de lengte.Ze kunnen nagaan of de website, zoals op het gebied van het e - mailadres van websites, en nog veel meer.Je kan ook te schrijven. De verificateur.,, een paar van de verificatie van de in enige specifieke.Bijvoorbeeld, ze kan controleren of de interne markt uniek voor wat we doen met de stop.Maar er zijn meer complexe unieke verificatie. Wanneer de gebruiker, Google, automatisch aan een plaats waar we om de uniciteit van de google_place_id, verborgen in het gebied, maar we hopen dat fouten op het gebied van informatie die op de zoektocht.Deze definitie:,, [] ['searchbox "unieke",'targetattribute "= > de google_place_id.,,, en we hopen dat de naam en het adres is om ervoor te zorgen dat de enige samen.Met andere woorden, meer een plaats met dezelfde naam, of hetzelfde adres, maar geen plaats kan zijn dezelfde twee gebieden.Deze definitie is:,, de naam "[], full_address, unieke", "doel" = > [naam]] full_address, ",,, natuurlijk, veel gebruikers toe op dezelfde plek waar ze van de lijst, de opheffing van gebreken userplaces.,,, ik wil ook voorkomen dat de schrapping van de partij. zend - Code Generator, Gil meestal banden te schrappen - indicatoren en de nieuwe pagina 's.We moeten deze verwijderen.We moeten de beperking van de toegang van de verantwoordelijke voor de verwerking van de geschrapt.,, hier is een icoon van de index en het schrappen van blz. Voorbeeld: als we de chips aanpassen,,,,, deze banden, we standaard gebruik te schrappen.,, trouwens, ik waardeer het leiden van een gebruik en glyphicons.Ze werkt erg mooi.,, dit is het schrappen van de knop naar bladzijde:,,,,,, laten we nu commentaar uit de code van de wis knop, //advies lokale /oog. Php.Misschien wil op een bepaald moment om hem terug, en het, administrateur,PHP HTML:*: een (zend:: t ('frontend "," het schrappen van "), ['delete", "identiteit" = > $model >], [type = > "knop, risico 's", "gegevens" = > ["bevestigen = > de resterende -:: t ('frontend", "weet je zeker dat je wil dit project?")"Methode" = > ""]]) * /???????> dat, om te voorkomen dat de automatische enter ingediend en ik zal het tot een van de geografische ligging en de voltooiing van de code waar Google, een fout, een relevante javascript.,, bijvoorbeeld, als je op enter automatisch ter plaatse na indienen in de vorm van typen, Google.We moeten het herschrijven van de.,, in onze create_place.js, voegen we een sleutel om te voorkomen dat de procedures voor de behandeling van de ingediende vorm, functie, setuplisteners: () {///////...Var place_input = documenten. GetElementById ('place-searchbox "); de Google maps gebeurtenissen. Adddomlistener (place_input," keydown, functionele (e) {als z 'n vrouw = = 13) {zoals preventdefault ();}});}, nu, als je, je zult het zien, in het gezicht van de Kaart op blz. De rest kan voorafgaand aan de indiening van de vorm in de redactie.,,,,, achteraf met behulp van een kader dat de belangen van veel mensen denken dat PHP een minder ernstige of een platform te creëren.Voor mij, PHP Facebook succes zal nooit hun ongelijk bewijzen. , veel mensen nog niet van gehoord zend kader of afwijzing van de waarde van het kader. , lang voordat deze van start reeks, we hebben geprofiteerd van de voordelen van het kader van veel zend het versnellen van de ontwikkeling van een schone, die De structuur en de code kwaliteit:,, m.v.c., database, migratie, de activiteiten en de relatie tussen de registratie van modellen om na te gaan of de code automatisch leiden glyphicons, integratie en toegang tot controle - filter, stop, gedrag, internationalisering, dit is de reden waarom ik voor YII kader bevorderen.Het maakt me meer efficiënte ontwikkeling, kan een oplossing bieden voor de snelheid, dan heb ik een vanille - PHP.
Om te beginnen: controle op de toegang tot de gegevens en de
Previous:Pas na de toewijzing van de
Next Page:De gebruiker kan