Zuvor haben wir die Model-View-Controller- oder MVC-Architektur von OpenCart überprüft. In dieser Hinsicht haben wir unser erstes "Hello World!" Regler. Im letzten Artikel des letzten Artikels habe ich nur einige grundlegende Dinge des Controllers besprochen.
Ich hoffe, Sie haben das Erstellen von Controllern geübt, da wir nun die Diskussion über Controller auf fortgeschrittenem Niveau vorantreiben. Bevor wir jedoch mit der Diskussion beginnen, erhalten Sie einen Überblick über das, was wir in diesem Artikel besprechen werden.
Wir erstellen ein einfaches Benutzerformular nach dem OpenCart MVC Framework. Dafür müssen wir zuerst einen Controller erstellen. Da habe ich ein Verzeichnis angelegt Formen
in der Katalog / Controller
Hinweis: Mac- und Linux-Benutzer, vergessen Sie nicht, Ihre Verzeichnisberechtigung auf 775 zu ändern.
In der Formen
Verzeichnis habe ich eine Datei erstellt myform.php
. Jetzt fangen wir an, den Code zu schreiben.
document-> settitle ("Mein Formular"); // Zum Einstellen des Seitentitels $ this-> data ['breadcrumbs'] = array (); // Ein Breadcurmbs-Array initialisieren $ route = $ this-> request-> get ['route']; // Abrufen der URL "route" mithilfe der GET-Methode // Making of Breadcrumb in Bezug auf home $ this-> data ['breadcrumbs'] [] = array ('text' => 'Home', 'href' => $ this -> url-> link ('common / home'), // Pfad zum Home 'Trennzeichen' => false); // Making of Breadcrumb verweist auf die aktuelle Seite $ this-> data ['breadcrumbs'] [] = array ('text' => 'My form', 'href')>> $ this-> url-> link ($ route ), // Routenpfad zur aktuellen URL 'Trennzeichen' => '|' // Breadcrumb-Trennungssymbol); // Breadcrumbs beenden $ this-> data ['form_heading'] = 'My Form Heading'; // Verwenden Sie das $ this-> data-Schlüsselwort zum Analysieren der Controller-Daten, um $ this-> data anzuzeigen ['first_value'] = 'Vorname:'; $ this-> data ['second_value'] = 'Nachname:'; $ this-> data ['third_value'] = 'Passnummer:'; $ this-> data ['forth_value'] = 'Telefonnummer:'; $ this-> data ['continue'] = $ this-> url-> link ('common / home'); // Daten verknüpfen für Schaltfläche "Fortfahren" $ this-> data ['button_continue'] = 'Continue'; // Textdaten für Seite fortsetzen // Untergeordnete Elemente der Seiten hinzufügen, dh Kopfzeile, Fußzeile und Spalten $ this-> children = array ('common / column_left', 'common / column_right'), 'common / content_top', 'common / content_bottom ',' common / footer ',' common / header '); $ this-> template = 'default / template / forms / myform.tpl'; // Siehe Template / View-Datei für die Benutzeroberfläche $ this-> response-> setoutput ($ this-> render ()); // Vorlage als Ausgabe rendern?>
Überprüfen Sie den Code immer wieder und versuchen Sie, einen solchen Controller zu erstellen.
OpenCart ermöglicht eine einfache Bearbeitung und das Spielen mit Sprachen. Im obigen Beispiel wurden die hartcodierten Sprachtexte verwendet. Es wird jedoch empfohlen, die Textmanipulation zu verwenden.
Um eine Sprache zu laden, verwenden Sie $ this-> language-> load (Routenpfad der Sprache);
& um die spezifischen Sprachdaten zu erhalten, verwenden Sie diese Syntax $ this-> language-> get (Sprachdateidatenschlüsselwort);
.
Beachten Sie, dass es dringend empfohlen wird, eine Sprachdatei für jeden Controller und jede Seite zu erstellen. Der Pfad der Sprachroute sollte auch dem Controller entsprechen.
Es gibt eine Reihe von vorcodierten Bibliotheken, die für den Entwickler leicht zugänglich sind. Bibliotheken können in gefunden werden / system / bibliothek
. Bibliotheken können mit der folgenden Syntax direkt in Controller geladen werden: $ this-> Bibliotheksname-> Methodenname ()
.
Zuvor haben wir einige Bibliotheken untersucht, damit Sie sie mit Ihrem Code bearbeiten können. Einige Spickzettel sind wie folgt verfügbar:
$ this-> cart-> getProducts (); // Holen Sie sich alle im Warenkorb verfügbaren Produkte $ this-> cart-> add ($ product_id, $ qty = 1, $ options = array ()); // Produkt zum Einkaufswagen hinzufügen $ this-> cart-> remove ($ key); // Entfernt das Produkt aus dem Warenkorb $ this-> cart-> clear (); // leert den Einkaufswagen $ this-> cart-> getWeight (); // Gibt die Summe der Gewichte aller Produkte zurück. $ This-> cart-> getSubTotal (); // Gibt die Zwischensumme aller Produkte zurück. $ This-> cart-> getTotal (); // Liefert die Summe des Warenkorbs $ this-> cart-> countProducts (); // Gibt die Anzahl der im Warenkorb verfügbaren Produkte zurück. $ This-> cart-> hasProducts (); // Gibt true zurück, wenn mindestens ein Artikel im Warenkorb verfügbar ist $ this-> cart-> hasStock (); // Gibt false zurück, wenn mindestens 1 Produkt im Warenkorb nicht auf Lager ist
$ this-> config-> get ($ key); // Gibt die Einstellung anhand des Schlüsselnamens basierend auf der Anwendung (Katalog oder Administrator) zurück. $ This-> config-> set ($ key, $ value); // Setzen Sie den Einstellwert und setzen Sie ihn außer Kraft. (Speichern Sie es nicht in DB). CURRENCY $ this-> Currency-> Set ($ Currency); // Den Standard-Währungscode setzen und überschreiben, was in der Sitzung $ this-> currency-> format ($ number, $ currency = ", $ value =", $ format = TRUE) verwendet wird; // formatiert die Währung $ this-> currency-> convert ($ value, $ from, $ to); // Konvertiert den Währungswert in eine andere Währung. $ This-> currency-> getId (); // Ruft die ID der aktuellen Währung ab $ this-> currency-> getCode (); // Gibt den Währungscode der aktuellen Währung zurück. $ This-> currency-> getValue ($ currency); // Gibt den Wechselkurs der bereitgestellten Währung zurück. $ This-> currency-> has (currency); // Gibt "true" zurück, wenn in der Währungsliste verfügbar
$ this-> customer-> login ($ email, $ password); // meldet sich beim Kunden an $ this-> customer-> logout (); // Abmelden des Kunden $ this-> customer-> isLogged (); // Gibt true zurück, wenn der Benutzer angemeldet ist int $ this-> customer-> getId (); // Gibt die ID des aktuell angemeldeten Benutzers $ this-> customer-> getFirstName () zurück // Gibt den Vornamen des angemeldeten Benutzers $ this-> customer-> getLastName () zurück // Gibt den Nachnamen des angemeldeten Benutzers $ zurück this-> customer-> getEmail (); // Liefert die E-Mail des angemeldeten Benutzers $ this-> customer-> getTelephone (); // Liefert den aktiven Benutzer Telephone $ this-> customer-> getFax (); // Liefert die Faxnummer des aktiven Benutzers $ this-> customer-> getNewsletter (); // Liefert den Newsletter statu $ this-> customer-> getCustomerGroupId (); // Gibt die ID der aktiven Kundengruppe zurück
$ this-> db-> query ($ sql) // Führt die MySQL-Abfrage aus und gibt die Anzahl der Zeilen zurück. $ this-> db-> escape ($ value); // Bereinigt den Wert und macht ihn sicher für die Datenbank $ this-> db-> getLastId ($ sql); // Gibt die letzte eingefügte ID aus einer neueren Abfrage zurück
$ this-> document-> setTitle ($ title); // Setzt den Seitentitel $ this-> document-> getTitle (); // Ruft den Seitentitel ab $ this-> document-> setDescription ($ description); // Setzt die Seite Beschreibung $ this-> document-> getDescription (); // Ruft die Seitenbeschreibung ab $ this-> document-> setKeywords (); // Legt die Seiten-Schlüsselwörter fest $ this-> document-> getKeywords (); // Ruft die Seitenschlüsselwörter ab $ this-> document-> addStyle ($ href, $ rel = 'stylesheet', $ media = 'screen'); // Stylesheet zum Dokument hinzufügen $ this-> document-> getStyles (); // Ruft Seitenstile auf $ this-> document-> addScript ($ script); // fügt Skript zur Seite hinzu $ this-> document-> getScripts (); // Ruft Seitenskripte ab
In OpenCart gibt es immer Vorlagen, die für Ansichten zur Anzeige der Ausgabe verwendet werden. Im obigen Controller haben wir den Speicherort der Ansichtsdatei angegeben theme / default / template / forms / myform.tpl
.
Erstellen Sie nun eine Datei mit diesem Namen und geben Sie den folgenden Code ein:
">
Ein Modell enthält die Interaktion mit der Datenbank und ihren Objekten. Bevor Sie mit model arbeiten, gehen Sie zu phpMyAdmin und wählen Sie Ihre Geschäftsdatenbank aus (d. H., gespeichertb
) und führen Sie dies in SQL Panel aus
CREATE TABLE 'oc_myforms' ('id' int (11) NOT NULL AUTO_INCREMENT, 'first_value' varchar (80) DEFAULT NULL, 'second_value' varchar (80) DEFAULT NULL, 'dritter_wert' varchar (80) DEFAULT NULL, 'forth_value' varchar (80) DEFAULT NULL, 'date_added' datetime DEFAULT '0000-00-00 00:00:00', Primärschlüssel ('id')) ENGINE = InnoDB DEFAULT CHARSET = latin1
"oc" ist ein Tabellenpräfix, verwenden Sie Ihr eigenes DB-Präfix.
Nun ist es Zeit, ein eigenes Modell zu erstellen. Der Zweck beim Erstellen eines Modells zum Speichern der Formulardaten in der Datenbank. So können wir unser erstes Modell erstellen.
Erstellen Sie eine neue Datei myforms.php
im Katalog / Modell / Formulare /
und geben Sie den Code wie folgt ein:
db-> query ("INSERT INTO". DB_PREFIX. "myforms SET. $ this-> db-> escape ($ data_array [" first_value ']). "', second_value = '". $ this-> db-> escape ($ data_array ['second_value']). "', third_value ='". $ this-> db-> escape ($ data_array ['third_value']). "', forth_value ='". $ this-> db- > escape ($ data_array ['forth_value']). "', date_added = NOW ()"); $ form_id = $ this-> db-> getLastId (); // Gibt die letzte eingefügte ID zurück. Return $ form_id; ?>
So sieht unser endgültiger Controller-Code folgendermaßen aus:
request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> load-> model ('forms / myform'); // Routenpfad ohne .php $ form_id = $ this-> model_forms_myform-> saveData ($ this-> request-> post); // Analysiere alle veröffentlichten Daten if ($ form_id) $ this-> redirect ($ this-> url-> link ('forms / myform')); // Das Formular erneut laden $ this-> document-> settitle ('My Form'); // Zum Einstellen des Seitentitels $ this-> data ['breadcrumbs'] = array (); // Ein Breadcurmbs-Array initialisieren $ route = $ this-> request-> get ['route']; // Abrufen der URL "route" mithilfe der GET-Methode // Making of Breadcrumb in Bezug auf home $ this-> data ['breadcrumbs'] [] = array ('text' => 'Home', 'href' => $ this -> url-> link ('common / home'), // Pfad zum Home 'Trennzeichen' => false); // Making of Breadcrumb verweist auf die aktuelle Seite $ this-> data ['breadcrumbs'] [] = array ('text' => 'My form', 'href')>> $ this-> url-> link ($ route ), // Routenpfad zur aktuellen URL 'Trennzeichen' => '|' // Breadcrumb-Trennungssymbol); // Breadcrumbs beenden $ this-> data ['form_heading'] = 'My Form Heading'; // Verwenden Sie das $ this-> data-Schlüsselwort zum Analysieren der Controller-Daten, um $ this-> data anzuzeigen ['first_value'] = 'Vorname:'; $ this-> data ['second_value'] = 'Nachname:'; $ this-> data ['third_value'] = 'Passnummer:'; $ this-> data ['forth_value'] = 'Telefonnummer:'; $ this-> data ['continue'] = $ this-> url-> link ('common / home'); // Daten verknüpfen für Schaltfläche "Fortfahren" $ this-> data ['button_continue'] = 'Continue'; // Textdaten für Seite fortsetzen // Untergeordnete Elemente der Seiten hinzufügen, dh Kopfzeile, Fußzeile und Spalten $ this-> children = array ('common / column_left', 'common / column_right'), 'common / content_top', 'common / content_bottom ',' common / footer ',' common / header '); $ this-> template = 'default / template / forms / myform.tpl'; // Siehe Template / View-Datei für die Benutzeroberfläche $ this-> response-> setoutput ($ this-> render ()); // Vorlage als Ausgabe rendern?>
Die Bedingung prüft also, ob Daten von der POST-Methode stammen. Wenn ja, wird der Datenbankeintrag angezeigt.
Beachten Sie, dass Sie Ihre Validierungen und Überprüfungen hinzufügen können, um die POST-Daten zu validieren.
Bingo! Wir haben eine echte Model-View-Controller-Anwendung in OpenCart programmiert. Sie können mehr erkunden und in das MVC-Meer eintauchen. Dies war jedoch eine grundlegende Einführung in das MVC-Muster, und wir haben unseren Meilenstein erreicht.
In unseren zukünftigen Artikeln werden wir die Erstellung von Modulen und Bibliotheken von OpenCart diskutieren. Bitte geben Sie Ihr vorheriges Feedback zu einem Artikel in den Kommentar-Feed ein.