Statische Seiten¶
Hinweis: In diesem Lernprogramm wird davon ausgegangen, dass Sie CodeIgniter heruntergeladen und das Framework in Ihrer Entwicklungsumgebung installiert haben.
Als erstes richten Sie einen Controller für die Verarbeitung statischer Seiten ein. Ein Controller ist einfach eine Klasse, die beim Delegieren hilft work.It ist der Klebstoff Ihrer Webanwendung.
Zum Beispiel, wenn ein Anruf an:
Wir könnten uns vorstellen, dass es einen Controller namens „news“ gibt. Die Methode, die bei Nachrichten aufgerufen wird, wäre „latest“. Die Aufgabe der Nachrichtenmethode könnte darin bestehen, 10 Nachrichten zu erfassen und auf der Seite zu rendern. Sehr oft sehen Sie in MVC URL-Muster, die übereinstimmen:
Wenn URL-Schemata komplexer werden, kann sich dies ändern. Aber im Moment ist das alles, was wir wissen müssen.
Erstellen Sie eine Datei unter application/controllers/Pages .php mit folgendem Code.
<?phpclass Pages extends CI_Controller { public function view($page = 'home') { }}
Sie haben eine Klasse mit dem Namen Pages
mit einer view-Methode erstellt, die ein Argument mit dem Namen $page
akzeptiert. Die Klasse Pages
erweitert die KlasseCI_Controller
. Dies bedeutet, dass die neue pages-Klasse auf die in der CI_Controller
-Klasse definierten Methoden und Variablen zugreifen kann (system/core/Controller.PHP).
Der Controller wird zum Mittelpunkt jeder Anfrage anihre Webanwendung. In sehr technischen CodeIgniter-Diskussionen wird es vielleicht als Superobjekt bezeichnet. Wie jede PHP-Klasse verweisen Sie aufit in Ihren Controllern als $this
. Unter Bezugnahme auf $this
laden Sie Bibliotheken, Ansichten und befehlen im Allgemeinen das Framework.
Nachdem Sie Ihre erste Methode erstellt haben, ist es an der Zeit, einige grundlegende pagetemplates zu erstellen. Wir werden zwei „Ansichten“ (Seitenvorlagen) erstellen, die als Seitenfußzeile und Kopfzeile fungieren.
Erstellen Sie den Header unter application/views/templates/header .php und addthe folgenden Code:
<html> <head> <title>CodeIgniter Tutorial</title> </head> <body> <h1><?php echo $title; ?></h1>
Die Kopfzeile enthält den grundlegenden HTML-Code, den Sie vor dem Laden der Hauptansicht zusammen mit einer Überschrift anzeigen möchten. Es wird auchgeben Sie die Variable $title
aus, die wir später im Controller definieren werden.Erstellen Sie nun eine Fußzeile unter application/views/templates/footer .php, das den folgenden Code enthält:
<em>© 2015</em> </body></html>
Logik zum Controller hinzufügen¶
Früher haben Sie einen Controller mit einer view()
-Methode eingerichtet. Die Methodeakzeptiert einen Parameter, der der Name der zu ladenden Seite ist. Die statischen Seitenvorlagen befinden sich im Verzeichnis application/views/pages/ .
Erstellen Sie in diesem Verzeichnis zwei Dateien mit dem Namen home.php und über.PHP.Geben Sie in diesen Dateien Text ein − alles, was Sie möchten − und speichern Sie sie.Wenn Sie besonders unoriginell sein möchten, versuchen Sie es mit „Hallo Welt!“.
Um diese Seiten zu laden, müssen Sie überprüfen, ob die angeforderte Seite tatsächlich vorhanden ist:
public function view($page = 'home'){ if ( ! file_exists(APPPATH.'views/pages/'.$page.'.php')) { // Whoops, we don't have a page for that! show_404(); } $data = ucfirst($page); // Capitalize the first letter $this->load->view('templates/header', $data); $this->load->view('pages/'.$page, $data); $this->load->view('templates/footer', $data);}
Wenn die Seite nun vorhanden ist, wird sie einschließlich Header undfooter geladen und dem Benutzer angezeigt. Wenn die Seite nicht existiert, wird der Fehler „404Page not found“ angezeigt.
Die erste Zeile dieser Methode prüft, ob die Seite tatsächlich existiert.Die native file_exists()
-Funktion von PHP wird verwendet, um zu überprüfen, ob die Datei dort ist, wo sie erwartet wird. show_404()
ist eine integrierte CodeIgniterfunktion, die die Standardfehlerseite rendert.
In der Header-Vorlage wurde die Variable $title
verwendet, um den Seitentitel anzupassen. Der Wert von title wird in dieser Methode definiert, aber anstatt den Wert einer Variablen zuzuweisen, wird er dem Element title im Array $data
zugewiesen.
Das letzte, was getan werden muss, ist das Laden der Ansichten in der Ordnungsie sollten angezeigt werden. Der zweite Parameter in der Methode view()
wird verwendet, um Werte an die Ansicht zu übergeben. Jeder Wert im Array $data
wird einer Variablen mit dem Namen ihres Schlüssels zugewiesen. Der Wert von$data
im Controller entspricht also $title
im Controller.
Routing¶
Der Controller funktioniert jetzt! Zeigen Sie Ihren Browser aufindex.php/pages/view
, um Ihre Seite anzuzeigen. Wenn Sieindex.php/pages/view/about
besuchen, sehen Sie die About-Seite, einschließlich der Kopf- und Fußzeile.
Mit benutzerdefinierten Routingregeln können Sie jeden URI jedem Controller und jeder Methode zuordnen und sich von der normalen Konvention lösen:http://example.com///
Lass uns das machen. Öffnen Sie die Routing-Datei unterapplication/config/routes.php und fügen Sie die folgenden zwei Zeilen hinzu.Entfernen Sie alle anderen Code, der jedes Element im Array $route
setzt.
$route = 'pages/view';$route = 'pages/view/';
CodeIgniter liest seine Routing-Regeln von oben nach unten und leitet therequest an die erste übereinstimmende Regel weiter. Jede Regel ist ein regulärer Ausdruck (links), der einem Controller- und Methodennamen zugeordnet ist, der durch Schrägstriche getrennt ist (rechts). Wenn eine Anforderung eingeht, sucht CodeIgniter nach dem firstmatch und ruft den entsprechenden Controller und die entsprechende Methode auf, möglicherweise witharguments .
Weitere Informationen zum Routing finden Sie in der URI Routingdocumentation.
Hier stimmt die zweite Regel im Array $route
mit jeder Anforderung überein, die die Platzhalterzeichenfolge (:any)
verwendet. und übergibt den Parameter an die Methodeview()
der Klasse Pages
.
Besuchen Sie jetzt index.php/about
. Wurde es korrekt an die view()
-Methode im Seitencontroller weitergeleitet? Großartig!