Sommige functies in vergelijking met andere frameworks
Gebruik het patroon MVC (model / weergave / controller)In tegenstelling tot andere frameworks, scheidt het elk onderdeel in mappen voor een betere orde en onderhoud.
- Codegeneratie: Yii kan CRUD-code genereren uit een databasetabel en de query's, lijsten en formulieren maken.
- Geïntegreerde jQuery- en Bootstrap-frameworkondersteuning
- Ingebouwde methoden voor toegangscontrole van rolverificatie en autorisatie
- Het bevat een beveiligings- en aanvalspreventiesysteem buiten het web.
- Ondersteunt widgets en extensies ontwikkeld door de community
- Ondersteunt het gebruik van ontwerpsjablonen
Yii Framework-installatie
Er zijn twee versies van Yii, een Basic en een Advanced. De basisversie zijn de gebruikersbestanden en de beheerdersbestanden samen, in de geavanceerde versie zijn ze gescheiden in twee mappen als onafhankelijke systemen Voorkant Y Backend
Om Yii 2.0 te installeren, moeten we de bestanden downloaden van de Yii Framework 2.0-website van de volgende url Yii 2.0 Basic en Yii 2.0 Advanced.
Eenmaal gedownload pakken we het bestand uit en kopiëren we de geavanceerde map op onze lokale server en hernoemen we het met de naam van ons webproject, in dit geval noemen we het yiidemo.
Vervolgens moeten we vanaf de terminal de bestanden van de structuur van het web installeren, hiervoor voeren we het volgende uit:
sudo php initHet zal ons vragen of we het in de ontwikkelings- of productiemodus willen uitvoeren, we zullen Ontwikkeling kiezen en vervolgens bevestigen, zodat alle benodigde standaardstructuur wordt gekopieerd.
Als we naar de yiidemo-webmap gaan, zullen we zien dat er verschillende mappen zijn geïnstalleerd en de twee die de backend-webbestanden voor de beheerder en de frontend voor het openbare web zullen bevatten.
We kunnen de backend in een browser zien aan de hand van de url:
http: // localhost / yiidemo / backend / web /
We kunnen ook het huissjabloon zien:
http: // localhost / yiidemo / frontend / web /
VERGROTEN
Zoals we kunnen zien, heeft het enkele voorbeeldpagina's, maar de login of gebruikersregistratie zijn niet functioneel omdat ze geen verbinding maken met een database, maar ze dienen om te beginnen als een codebasis, ook het ontwerp is responsief.Vervolgens zullen we de database maken van phpmyadmin die we yiidemodb zullen noemen.
De tabel voor de beheerder zal de volgende structuur hebben:
- Tabelstructuur voor tabel `administrator` - CREATE TABLE IF NOT EXISTS` administrator` (`id` tinyint (3) NOT NULL,` user` varchar (50) DEFAULT NULL, `key` varchar (50) DEFAULT NULL, `email ` varchar (100) STANDAARD NULL) MOTOR = MyISAM AUTO_INCREMENT = 2 STANDAARD CHARSET = latin1; - - Gegevens dumpen voor tabel `administrator` - INSERT INTO` administrator` (`id`,` user`, `password`,` email`) WAARDEN (1, 'admin', 'admin', ' [email protected] '); Vervolgens moeten we configureren om de database met Yii te koppelen. Hiervoor gaan we naar de map / common / config en openen we het bestand main_local.php, hier zijn de algemene configuraties voor zowel de backend als de frontend 'yii \ db \ Connection ', 'dsn '=>' mysql: host = localhost;dbname = yiidemodb ',' gebruikersnaam '=>' root ',' wachtwoord '=>' ',' charset '=>' utf8 ',]; ?> var13 ->Vervolgens moeten we het model, de controller en de beheerdersweergave maken, hiervoor gebruiken we de URL: http: // localhost / yii… index.php? R = gii
Nadat u hebt gedefinieerd welke tabel we het model willen genereren, klikt u op de knop Voorbeeld om te zien hoe het bestand eruit zou zien en vervolgens op Genereren om de code te genereren.
Vervolgens gaan we naar Crud-generator om de code en weergave, controller en minimale functionaliteiten te maken om met de tabel te communiceren. CRUD is het acroniem voor Create, Get, Update en Delete.
In de crud zullen we de routes van het model en de controller die zal worden gemaakt moeten definiëren, we kunnen ook een model toevoegen voor zoekopdrachten.
Modelklasse: backend \ modellen \ Beheerder
Zoek modelklasse: backend \ modellen \ Beheerder \ Beheerder Zoeken
Controller klasse: backend \ controllers \ AdministratorController
Dan drukken we op Voorbeeld en Genereren
Dan kunnen we de crud testen die we genereren uit de volgende url
http: // localhost / yii… r = beheerder
Vervolgens gaan we naar de \ backend \ config map en openen het main.php bestand, waar we de volgende regel code gaan aanpassen:
'identityClass' => 'gewone \ modellen \ Gebruiker'We veranderen voor ons beheerdersmodel
'identityClass' => backend \ modellen \ BeheerderWe geven aan dat we om in te loggen op de backend het Administrator-model zullen gebruiken dat in het opgegeven pad is gevonden.
Vervolgens gaan we naar de map common \ models en kopiëren we het bestand LoginForm.php naar de map backend \ models, op deze manier scheiden we de login die gebruikelijk is voor de backend en de frontend.
De controller die de login oproept is SiteController.php.php, we moeten het bestand openen en de regel wijzigen:
gebruik gemeenschappelijke \ modellen \ LoginForm;Per regel:
gebruik backend \ modellen \ LoginForm;Op deze manier, wanneer het formulier wordt verzonden, zoekt het naar LoginForm.php in backend \ modellen \ Beheerder zoals we hierboven definiëren.
Vervolgens moeten we het LoginForm als volgt aanpassen aan het beheerdersmodel:
getUser (); if (! $ gebruiker ||! $ gebruiker-> valideerwachtwoord ($ dit-> wachtwoord)) {$ dit-> addError ($ kenmerk, 'Onjuiste gebruikersnaam of wachtwoord.'); }} publieke functie login () {if ($ dit-> valideren ()) {echo 'hallo'; return Yii :: $ app-> gebruiker-> login ($ dit-> getUser (), $ dit-> onthoud mij? 3600 * 24 * 30: 0); } else {retour onwaar; }} // functie die een gebruiker zoekt aan de hand van zijn gebruikersnaam beveiligde functie getUser () {if ($ dit -> _ gebruiker === null) {// als het bestaat, verkrijgt het een array met alle gegevens $ dit -> _ gebruiker = Beheerder :: findByUsername ($ dit-> gebruikersnaam); } retourneer $ dit -> _ gebruiker; }}?> var13 ->Vervolgens wijzigen we het gegenereerde Administrator-model en voegen we IdentiteitInterface dat is een klasse die verschillende geavanceerde beveiligingsfuncties biedt voor toegangscontrole. In dit geval is ons voorbeeld eenvoudig, maar we moeten ze geïmplementeerd hebben, zelfs als we ze niet gebruiken.
50], [['e-mail'], 'string', 'max' => 100]]; } // Tabelvelden openbare functie attributeLabels () {return ['id' => 'ID', 'user' => 'User', 'password' => 'Password', 'email' => 'Email' ,]; } // voorgedefinieerde functie in IdentityInterface om gebruiker op naam te vinden openbare statische functie findByUsername ($ gebruikersnaam) {return static :: findOne (['user' => $ gebruikersnaam]); } / voorgedefinieerde functie in IdentityInterface om te zoeken naar de belangrijkste openbare functie validPassword ($ wachtwoord) {return static :: findOne (['key' => $ wachtwoord]); } // voorgedefinieerde functie in IdentityInterface om gebruiker te vinden op id openbare statische functie findIdentity ($ id) {return static:: findOne ($ id); } // vooraf gedefinieerde functie in IdentityInterface om gebruiker te zoeken op markering of token openbare statische functie findIdentityByAccessToken ($ token, $ type = null) {// return static:: findOne (['access_token' => $ token]); } // Retourneert de gebruikers-ID openbare functie getId () {return $ dit-> id; } // Retourneert een sleutel die kan worden gebruikt om de geldigheid van een ID openbare functie te controleren getAuthKey () {// return $ this-> auth_key; } // Valideer de sleutel die is geretourneerd door de vorige functie. openbare functie validAuthKey ($ authKey) {// return $ this-> getAuthKey () === $ authKey; }}Vervolgens moeten we de lay-out in backend \ view \ layout wijzigen, we openen het main.php-bestand
We zoeken de regels code:
// We wijzigen de naam van het web My Company NavBar :: begin (['brandLabel' => 'My Company', 'brandUrl' => Yii :: $ app-> homeUrl, 'options' => ['class' = > 'navbar-inverse navbar-fixed-top',],]); 'brandLabel' => 'My Company', We veranderen in 'brandLabel' => 'My Yii Demo', // Als ik ben ingelogd laat ik de link zien Login if (Yii :: $ app-> user-> isGuest) {$ menuItems [ ] = ['label' => 'Inloggen', 'url' => ['/ site / login']]; } else {// Als ik dat niet ben, zal ik andere links in het menu tonen $ menuItems [] = ['label' => 'Uitloggen ('. Yii :: $ app-> gebruiker-> identiteit-> gebruikersnaam. ' )', ' url '=> [' / site / uitloggen '],' linkOptions' => ['data-method' => 'post']]; }Hier veranderen we de gebruiker
'label' => 'Uitloggen ('. Yii :: $ app-> gebruiker-> identiteit-> gebruikersnaam. ')',We veranderen voor ons gebruikersveld
'label' => 'Uitloggen ('. Yii :: $ app-> gebruiker-> identiteit-> gebruiker. ')',Eindelijk kunnen we inloggen:
http: // localhost / pro… mo / backend / web /
- Gebruiker beheerder
- Sleutel beheerder
VERGROTEN
De hoofdpagina is gewijzigd van \ backend \ views \ site.In een andere tutorial zullen we zien hoe je het ontwerp van de hoofdpagina kunt wijzigen, menu's kunt maken, pagina's kunt linken en functionaliteiten kunt toevoegen. Wees attent en volg me als je geïnteresseerd bent.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een positief punt te geven