In diesem Lernprogramm erfahren Sie, wie Sie Yii 2.0 installieren, Ihre lokale Entwicklungsumgebung einrichten, eine einfache Hello World-Anwendung erstellen, Ihre Remote-Produktionsumgebung für das Hosting einrichten und Ihren Code aus einem GitHub-Repository bereitstellen.
Eine ausführliche Installationsanleitung finden Sie hier. Ich werde Sie durch die Grundlagen einer typischen Mac OS X-Entwicklungsumgebung führen. Yii 2.0 verfügt über einen Definitive Guide (PDF) und eine Klassenreferenz, die jedes Detail von Yii abdeckt. ca
Yii2 erfordert Composer, einen beliebten Abhängigkeitsmanager für PHP. Wenn Sie Composer noch nicht installiert haben, gehen Sie wie folgt vor:
curl -s http://getcomposer.org/installer | php mv composer.phar / usr / local / bin / composer
Verwenden Sie dann Composer, um Yii2 zu installieren. Für die Installationsanforderung müssen Sie Ihre eigenen Anmeldeinformationen für das Github-Konto verwenden. Melden Sie sich an, wenn Sie noch kein Konto haben.
Nennen wir dieses erste Projekt "Hallo":
cd ~ / Sites composer global erfordert den Komponisten "fxp / composer-asset-plugin: 1.0.0-beta2" create-project --prefer-dist yiisoft / yii2-app-basic hallo
Yii2 bietet zwei verschiedene Installationsvorlagen, abhängig von der Art der Anwendung, die Sie entwickeln: grundlegende und erweiterte. Für dieses Tutorial verwenden wir die Standardanwendung, die standardmäßig installiert ist. Die erweiterte Anwendungsvorlage bietet Front-End-, Back-End- und Konsolenzugriffspunkte für eine fortgeschrittenere Webanwendung wie ein WordPress-Blog, ein Verwaltungs-Dashboard und Hintergrund-Cron-Aufgaben.
Für meine LAMP-Entwicklung verwende ich kostenloses Open Source-MAMP für OS X. Stellen Sie sicher, dass MAMP ausgeführt wird und die Web- und Datenbankserver aktiv sind. Erstellen Sie dann einen Symlink für MAMP zu Ihrem Sites
App-Verzeichnis:
cd / Anwendungen / MAMP / htdocs ln -s ~ / Sites / hallo / / Applications / MAMP / htdocs / hallo
Dann besuchen Sie http: // localhost: 8888 / hallo / web. Sie sollten die grundlegende Anwendungsvorlage von Yii2 mit Bootstrap 3.x sehen.
Diese Seite wird wahrscheinlich die Entwickler von Yii 1.1 begeistern, die noch keine vorkonfigurierte Unterstützung für die neueste Version von Bootstrap hatten, das herausragende auf Open Source reagierende CSS-Framework, das einiges vom Web übernommen hat.
Eine der wichtigsten Funktionen des Yii Frameworks ist die Bereitstellung eines Model View Controllers für PHP. Dies bietet nicht nur eine strukturiertere Programmierumgebung und verständlicheren Code, sondern vereinfacht auch eine Reihe von Dingen, die in PHP schwer zu bewerkstelligen sind, wie Sicherheit und automatisierte Codegenerierung. Dies macht es auch einfacher, unseren Code zu erweitern und wiederverwendbar zu machen.
Mit einer Yii-Anwendung leiten wir den gesamten Datenverkehr in eine einzige Datei: /web/index.php
Datei. Diese integrierte Datei lädt Yii, alle Abhängigkeiten und führt dann Ihre Anwendung aus.
Lauf();
Standardmäßig ist dies die Indexmethode in /controllers/SiteController.php
:
öffentliche Funktion actionIndex () return $ this-> render ('index');
Im Allgemeinen sind Controller voll mit Methoden, aber mit minimalem Code wie oben. Controller verwalten den Zugriff, nutzen Modelle und rendern Ansichten. Der größte Teil der Intelligenz sollte in Ihre Modelle integriert sein und die Ansichten sollten im Allgemeinen relativ einfache Vorlagenvorgänge erzeugen.
Standardmäßig wird Yii gerendert /views/layouts/main.php
um Ihre Indexansicht in /views/site/index.php
. Das main.php
Layout stellt die HTML- und CSS-Struktur für die Seite bereit, z. die Symbolleiste und den Inhaltsbereich. Innerhalb main.php
, Sie sehen einen kurzen Aufruf zum Inhalt:
= Breadcrumbs::widget([ 'links' => isset ($ this-> params ['breadcrumbs'])? $ this-> params ['breadcrumbs']: [],])?> = $content ?>
Das $ content
Variable wird durch den generierten Code von ersetzt /views/site/index.php
, Welcher ist derzeit statischer HTML-Code, der das generiert Herzliche Glückwünsche! Seite oben gezeigt.
Lassen Sie uns zunächst die hübschen URLs von Yii2 mit aktivieren mod_rewrite
. Wenn Sie auf der Yii-Homepage auf die Schaltfläche klicken Über Bei der Menüoption lautet die URL etwa http: // localhost: 8888 / hello / web / index.php? r = site% 2Fabout. Wir möchten dies in http: // localhost: 8888 / hallo / web / site / über ändern.
Das Konfig
Das Unterverzeichnis enthält Umgebungskonfigurationen für Ihre Web- und Konsolenanwendungen sowie die zukünftigen Datenbankeinstellungen. Bearbeiten /config/web.php
hinzufügen urlManagement
zur aktuellen Webanwendung. Fügen Sie folgendes hinzu urlManager
Abschnitt innerhalb des Komponenten-Arrays:
'components' => [//… 'urlManager' => ['showScriptName' => false, 'enablePrettyUrl' => true], //… 'request' => [
Dann erstellen Sie eine .htaccess
Datei innerhalb /Netz
wo der primäre index.php
Datei existiert:
RewriteEngine on # Wenn ein Verzeichnis oder eine Datei vorhanden ist, verwenden Sie es direkt. RewriteCond% REQUEST_FILENAME! -F RewriteCond% REQUEST_FILENAME! -D # Andernfalls leiten Sie es an die index.php RewriteRule weiter. index.php
Stelle sicher mod_rewrite
läuft lokal auf MAMP; Wenn nicht, lesen Sie diese Stack Overflow-Anleitung.
Besuchen Sie in Ihrem Browser diese URL: http: // localhost: 8888 / hello / web / site / about. Sie sollten die Info-Seite der Yii-Anwendung sehen. Wenn Sie auf andere Menüoptionen klicken, werden hübsche URLs angezeigt.
Als Nächstes fügen wir eine Controller-Aktion hinzu Sagen
eine Zielbotschaft unserer Wahl zu wiederholen. Im /controllers/SiteController.php
, Fügen Sie die folgende Aktion hinzu:
öffentliche Funktion actionSay ($ target = 'World') return $ this-> render ('say', ['target' => $ target]);
Dadurch wird nach einem URL-Parameter mit dem Namen target gesucht, der auf dem Bildschirm angezeigt wird. Wenn es keinen Zielparameter gibt, wird "World" wiederholt. In Yii sind Aktionen als eine Methode definiert, die mit dem Präfix "Aktion" gefolgt vom Aktionsnamen bezeichnet wird. In diesem SiteController
Klasse verwenden wir öffentliche Funktion actionSay
. Yii verwendet das Präfix "Aktion", um die Aktionsmethoden von anderen Methoden zu unterscheiden.
Das Standardverhalten der Render-Methode sucht nach einer Datei in Ansichten / ControllerID / ViewName.php
. Also in / views / site /
, ein ... kreieren say.php
Datei ansehen:
Hallo = Html::encode($target) ?>
Willkommen bei Ihrer Yii2-Demonstrationsanwendung.
Dies ist die Vorlagenansichtdatei zum Wiederholen des statischen HTML-Tags h1
mit Hallo gefolgt von der Zielvariablen. Hinweis: Wir verschlüsseln die Zielvariable, um das URL-Parameterargument vor schädlichem Code zu schützen.
Wenn Sie die URL besuchen, http: // localhost: 8888 / hello / web / site / say? Target = Tuts% 20Readers, sollten Sie Folgendes sehen:
Dies ist ein sehr einfaches Beispiel für den Yii2 Model View Controller. Eine ausführlichere Beschreibung der Hello World-Demonstration und der Yii2-MVC finden Sie hier.
Lassen Sie uns nun unsere Anwendung mit GitHub einrichten und auf einem Produktionsserver bereitstellen.
Die grundlegende Yii-Anwendung sollte mit Apache oder einem Nginx aus dem Kasten heraus laufen, ich gebe Anweisungen für Apache und Sie können Anweisungen für Nginx hier finden.
Sobald ich eine Yii-Anwendungsvorlage eingerichtet habe, erstelle ich ein Repository bei Github:
Hinweis: Das Kopieren und Einfügen der Datei ist etwas einfacher Yii2 .gitignore von GitHub in Ihre lokale ~ / Sites / hello / .gitignore-Datei ein, anstatt die Site remote mit dieser zu erstellen und lokal zusammenzuführen, aber beide Ansätze sind in Ordnung.
Ich habe die Mac OS X-GitHub-App häufiger verwendet, Sie können jedoch auch die Befehlszeile verwenden, um das Repository zu initialisieren. Im Folgenden befolge ich die Anweisungen zum Hinzufügen eines vorhandenen Projekts zu GitHub über die Befehlszeile (ersetzen Sie "youraccount" durch Ihren GitHub-Kontonamen):
cd ~ / sites / hallo git init git commit -m "erstes Commit von hello world für yii2" git remote hinzufügen ursprung [email protected]: youraccount / hello.git git push -u ursprungmaster
Wenn Sie noch nicht über einen LAMP-Server oder eine Cloud-Instanz verfügen, befolgen Sie meine allgemeinen Ubuntu-Installationsanweisungen, um zu beginnen. Sobald Sie Ihre IP-Adresse haben, ändern Sie Ihre DNS-Einträge, um einen A-Aufzeichnungspunkt für Ihren Server zu erhalten.
yourdomain.com A 192.161.234.17
Melden Sie sich dann entweder über die IP-Adresse oder den Domänennamen bei Ihrem Server an:
ssh [email protected]
Aktualisieren Sie die Konfiguration, installieren Sie Git, aktivieren Sie mod_rewrite
für Apache und mcrypt
für PHP:
Sudo apt-get Update Sudo Apt-Get Upgrade Sudo a2enmod umschreiben php5enmod mcrypt
Jetzt richten wir einen Benutzer ein, der Code von Github abruft, der von Apache bereitgestellt werden kann. Installieren Sie zuerst git auf Ihrem Server.
sudo apt-get install git
Anschließend erstellen wir eine Gruppe für www, fügen www-data- und GitHub-Benutzer hinzu und gewähren ihm den Besitz unserer Webverzeichnisse.
adduser github addgroup www adduser github www adduser www-daten www chown -R: www / var / www chmod + s -R / var / www chmod -vR g + w / var / www /
Als Nächstes erstellen wir einen Schlüssel für den Benutzer, den wir mit GitHub teilen, um den Code synchron zu halten:
su github ssh-keygen -t rsa -C "[email protected]" exit cat /home/github/.ssh/id_rsa.pub
Sie sehen so etwas, das Sie auf GitHub.com kopieren und einfügen müssen:
Besuchen Sie die Settings-Seite für Ihr GitH-Soundub-Repository unter keys und fügen Sie diesen Schlüssel zu Ihrem Repository hinzu:
Nachdem Sie es hinzugefügt haben, wird es hier aufgelistet:
Schließlich können Sie den Baum auf Ihrem Produktionsserver klonen:
git clone [email protected]: Ihr Konto / hello.git / var / www / hallo
Wenn Ihr GitHub-Zugriff richtig konfiguriert ist, sollte dies folgendermaßen aussehen (wenn nicht, überprüfen Sie dies):
Wenn Sie die Codebase mit dieser Lernprogrammreihe erweitern und Aktualisierungen von Ihrem lokalen Computer aus übertragen, können Sie sie mit git pull auf Ihrem Remote-Produktionsserver synchronisieren. Dies ist einfacher als das Ziehen eines Archivs oder das manuelle Synchronisieren von Code - und wird nützlicher, da diese Serie mit späteren Modulen fortgesetzt wird.
Erstellen Sie eine Apache-Site-Konfigurationsdatei:
nano /etc/apache2/sites-available/hello.conf
Passen Sie diese Konfiguration für Ihren Domainnamen an:
ServerName yourdomain.com # Dokumentstamm als "basic / web" DocumentRoot "/ var / www / hello / web" festlegen # use mod_rewrite für Unterstützung für hübsche URLs RewriteEngine on # Wenn ein Verzeichnis oder eine Datei vorhanden ist, verwenden Sie die Anforderung direkt RewriteCond% REQUEST_FILENAME! -f RewriteCond% REQUEST_FILENAME! -d # Andernfalls leiten Sie die Anforderung an index.php RewriteRule weiter. index.php
Aktivieren Sie Ihre Site:
a2ensite hello.conf a2dissite 000-default.conf Dienst apache2 reload
Besuchen Sie http://yourdomain.com/site/say?target=World! und Sie sollten sehen, dass Ihre Anwendung auf Ihrer Domain ohne die Yii2-Debug-Symbolleiste im unteren Bereich wie folgt ausgeführt wird:
Herzliche Glückwünsche! Wir sind jetzt bereit, weitere Funktionen in Yii2 zu erkunden. Wenn Sie wissen möchten, wann das nächste Yii2-Tutorial ankommt, folgen Sie @tutspluscode oder @reifman auf Twitter oder besuchen Sie meine Autorenseite. Meine Autorenseite enthält alle Artikel dieser Serie, sobald diese veröffentlicht sind.
Wenn Sie Fragen oder Korrekturen zu diesem Tutorial haben, veröffentlichen Sie diese bitte in den Kommentaren.