Tidligere har vi gjennomgått Model-View-Controller - eller MVC-arkitekturen i OpenCart. I denne forbindelse skapte vi vår første "Hello World!" Controller. Så, i den siste av forrige artikkel diskuterte jeg bare noen grunnleggende ting av Controller.
Jeg håper du har praktisert å skape Controller, da vi nå drar videre diskusjonen av kontrollører til avansert nivå, men før du starter diskusjonen, får vi en oversikt over hva vi skal diskutere i denne artikkelen.
Vi skal lage et enkelt brukerskjema etter OpenCart MVC Framework. For dette må vi først opprette en kontroller. Som jeg har opprettet en katalog skjemaer
inne i katalog / kontrolleren
Merk: Mac og Linux-brukere, ikke glem å endre katalogtillatelsen til 775.
Inne i skjemaer
katalog, jeg har opprettet en fil myform.php
. La oss nå begynne å skrive koden.
dokument-> settitle ('My Form'); // For å sette sidetittel $ this-> data ['breadcrumbs'] = array (); // Initialiser en Breadcurmbs Array $ rute = $ this-> request-> get ['route']; // Gjøre URL-rute »ved hjelp av GET-metoden // Fremstilling av Breadcrumb refererer til hjemmet $ this-> data ['breadcrumbs'] [] = array ('text' => 'Hjem', 'href' => $ dette -> url-> link ('common / home'), // rutevei til hjem 'separator' => false); // Gjør av Breadcrumb refererer til gjeldende side $ this-> data ['breadcrumbs'] [] = array ('text' => 'Min skjema', 'href' => $ this-> url-> link ), // rutebane til nåværende url 'separator' => '|' // Breadcrumb separator symbol); // Slutt Breadcrumbs $ this-> data ['form_heading'] = 'Min form overskrift'; // Bruk $ this-> datasøkeordet for å analysere kontrolldataene for å vise $ this-> data ['first_value'] = 'Fornavn:'; $ this-> data ['second_value'] = 'Etternavn:'; $ this-> data ['third_value'] = 'Passnummer:'; $ this-> data ['forth_value'] = 'Telefonnummer:'; $ this-> data ['continue'] = $ this-> url-> link ('common / home'); // Link Data for Fortsett-knappen $ this-> data ['button_continue'] = 'Fortsett'; // tekstdata for fortsette siden // Legg til barn av sidene, header, footer og kolonner $ 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'; // Se mal / vis fil for brukergrensesnitt $ this-> response-> setoutput ($ this-> render ()); // Tilbakestill mal som utgang?>
Gå gjennom koden igjen og igjen og prøv å opprette en kontroller som dette.
OpenCart gir en enkel manipulasjon og lek med språk. Så i det ovennevnte eksemplet ble de hardkodede språketekstene brukt. Men det anbefales å bruke tekstmanipuleringen.
For å laste inn et språk, bruk $ this-> language-> load (ruteveien til språket);
& for å få de spesifikke språkdataene, bruk denne syntaksen $ this-> language-> get (språk fil data søkeord);
.
Vær oppmerksom på at det er sterkt anbefalt å lage en språkfil for hver kontroller og side. Språkkursbanen bør også være den samme som kontrolleren.
Det er et par forkodede biblioteker tilgjengelig for utviklerens enkle forhold. Biblioteker kan være lokalisert i / System / bibliotek
. Biblioteker kan lastes direkte inn i Controller ved hjelp av syntaksen: $ Dette-> library_name-> method_name ()
.
Tidligere har vi studert noen få biblioteker, slik at du kan manipulere dem med koden din. Noen svindelark er tilgjengelig som følger:
$ Dette-> handlekurven-> getProducts (); // Få alle produktene tilgjengelige i handlekurven $ this-> cart-> add ($ product_id, $ qty = 1, $ options = array ()); // Legg til et produkt i handlekurven $ this-> cart-> remove ($ key); // Fjerner produktet fra handlekurven $ this-> cart-> clear (); // Tømmer handlekurven $ this-> cart-> getWeight (); // Returnerer summen av vekter av alle produkter $ this-> cart-> getSubTotal (); // Returnerer summen av alle produktene $ this-> cart-> getTotal (); // Returnerer summen av handlekurven $ this-> cart-> countProducts (); // Returnerer antall produkter tilgjengelig i handlekurven $ this-> cart-> hasProducts (); // Returnerer sant hvis minst ett element er tilgjengelig i handlekurven $ this-> cart-> hasStock (); // Returnerer falsk hvis minst 1 produkt er tomt i handlekurven
$ Dette-> config-> får ($ nøkkel); // Returnerer innstillingen etter tastatur basert på søknad (katalog eller admin) $ this-> config-> set ($ key, $ value); // Angi og overstyr innstillingsverdien. (Ikke lagre det i DB) KURRENCE $ this-> currency-> set ($ currency); // Sett og overstyr standardkoden som brukes i Session $ this-> currency-> format ($ number, $ currency = ", $ value =", $ format = TRUE); // Formater valutaen $ this-> currency-> konvertere ($ verdi, $ fra, $ til); // Konverterer valutaverdien til en annen valuta $ this-> currency-> getId (); // Gets ID of Current Currency $ this-> currency-> getCode (); // Returnerer valutakoden for gjeldende valuta $ this-> currency-> getValue ($ valuta); // Returnerer valutakursen forutsatt $ this-> currency-> har (valuta); // Returnerer sant hvis tilgjengelig i valutarliste
$ this-> kunde-> logg inn ($ email, $ password); // Logger i kunden $ this-> kunde-> logout (); // Logger ut kunden $ this-> customer-> isLogged (); // Returnerer sant hvis Bruker er logget int $ this-> kunde-> getId (); // Returnerer ID for gjeldende logget bruker $ this-> kunde-> getFirstName () // Returnerer fornavn på innlogget bruker $ this-> kunde-> getLastName () // Returnerer etternavnet på logget bruker $ dette-> kunde-> getEmail (); // Returnerer e-posten for innlogget bruker $ this-> kunde-> getTelephone (); // Returnerer den aktive brukeren Telefon $ this-> customer-> getFax (); // Returnerer Faksnummer Aktiv bruker $ this-> kunde-> getNewsletter (); // Returnerer nyhetsbrevet statu $ this-> customer-> getCustomerGroupId (); // Returnerer Active Customer Group ID
$ this-> db-> query ($ sql) // Utfører MySQL-spørringen og returnerer radene telle $ this-> db-> escape ($ value); // Rydder verdien og gjør den sikker for Database $ this-> db-> getLastId ($ sql); // Returnerer sist innsatt id fra nyere søk
$ Dette-> dokument-> setTitle ($ tittel); // Setter siden tittel $ this-> document-> getTitle (); // Gets Page Title $ this-> document-> setDescription ($ description); // Setter side Beskrivelse $ this-> document-> getDescription (); // Gets sidebeskrivelsen $ this-> document-> setKeywords (); // Setter siden Søkeord $ this-> document-> getKeywords (); // Gets the Page Nøkkelord $ this-> document-> addStyle ($ href, $ rel = 'stylesheet', $ media = 'skjerm'); // Legg til stilark for å dokumentere $ this-> document-> getStyles (); // Gets sidestiler $ this-> document-> addScript ($ script); // legger til script til side $ this-> document-> getScripts (); // Gets Page Scripts
I OpenCart er det alltid maler som brukes til visning for visning av utdata. I den ovennevnte kontrolleren har vi angitt visningsfilplasseringen til tema / default / mal / skjema / myform.tpl
.
Lag nå en fil med det navnet og legg koden under:
">
En modell holder samspillet med databasen og dens objekter. Så før du jobber med modell, gå til phpMyAdmin, velg din butikkdatabase (dvs.., storedb
) og utfør dette i SQL-panelet
CREATE TABLE 'oc_myforms' ('id' int (11) IKKE NULL AUTO_INCREMENT, 'first_value' varchar (80) DEFAULT NULL, 'second_value' varchar (80) DEFAULT NULL, 'tredje_value' varchar (80) DEFAULT NULL, 'forth_value' varchar (80) DEFAULT NULL, 'date_added' datetime DEFAULT '0000-00-00 00:00:00', PRIMARY KEY ('id')) MOTOR = InnoDB DEFAULT CHARSET = latin1
"oc" er et tabell prefiks, bruk ditt eget Store DB Prefix.
Nå er det på tide å lage din egen modell. Hensikten med å opprette en modell for å lagre skjemadataene i databasen. så kan vi lage vår første modell.
Opprett en ny fil myforms.php
i katalog / modell / skjemaer /
og legg koden som følger:
db-> spørre ("INSERT INTO". DB_PREFIX. "myforms SET. $ this-> db-> escape ($ data_array [" first_value "]). '', second_value = '". $ this-> db-> unnslippe ($ data_array [ 'SECOND_VALUE']). " 'THIRD_VALUE ='". $ dette-> DB> escape ($ data_array [ 'THIRD_VALUE']). " 'forth_value ='". $ dette-> DB > escape ($ data_array ['forth_value']). "', date_added = NU ()"); $ form_id = $ this-> db-> getLastId (); // Returnerer sist innsendt id return $ form_id; ?>
Så, vår siste kontrollerkode vil se slik ut:
request-> server ['REQUEST_METHOD'] == 'POST')) $ this-> load-> modell ('former / myform'); // rutevei uten .php $ form_id = $ this-> model_forms_myform-> saveData ($ this-> request-> post); // Parse alle opplastede data hvis ($ form_id) $ this-> omdirigere ($ this-> url-> link ('forms / myform')); // Legg på skjemaet igjen $ this-> document-> settitle ('My Form'); // For å sette sidetittel $ this-> data ['breadcrumbs'] = array (); // Initialiser en Breadcurmbs Array $ rute = $ this-> request-> get ['route']; // Gjøre URL-rute »ved hjelp av GET-metoden // Fremstilling av Breadcrumb refererer til hjemmet $ this-> data ['breadcrumbs'] [] = array ('text' => 'Hjem', 'href' => $ dette -> url-> link ('common / home'), // rutevei til hjem 'separator' => false); // Gjør av Breadcrumb refererer til gjeldende side $ this-> data ['breadcrumbs'] [] = array ('text' => 'Min skjema', 'href' => $ this-> url-> link ), // rutebane til nåværende url 'separator' => '|' // Breadcrumb separator symbol); // Slutt Breadcrumbs $ this-> data ['form_heading'] = 'Min form overskrift'; // Bruk $ this-> datasøkeordet for å analysere kontrolldataene for å vise $ this-> data ['first_value'] = 'Fornavn:'; $ this-> data ['second_value'] = 'Etternavn:'; $ this-> data ['third_value'] = 'Passnummer:'; $ this-> data ['forth_value'] = 'Telefonnummer:'; $ this-> data ['continue'] = $ this-> url-> link ('common / home'); // Link Data for Fortsett-knappen $ this-> data ['button_continue'] = 'Fortsett'; // tekstdata for fortsette siden // Legg til barn av sidene, header, footer og kolonner $ 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'; // Se mal / vis fil for brukergrensesnitt $ this-> response-> setoutput ($ this-> render ()); // Tilbakestill mal som utgang?>
Så vil tilstanden sjekke om det er noen data som kommer fra POST-metoden, hvis ja, da blir databasen oppført.
Merk at du kan legge til dine valideringer og sjekker for å validere POST-dataene.
Bingo! Vi har kodet en ekte verden Modell-View-Controller-applikasjon i OpenCart. Du kan utforske flere ting og dykke inn i MVC havet; Dette var imidlertid en grunnleggende introduksjon til MVC-mønsteret, og vi har oppnådd vår milepæl.
I våre fremtidige artikler skal vi diskutere modulene og bibliotekene som er opprettet av OpenCart. Vennligst gi din forrige tilbakemelding på artikkelen i kommentarfeltet nedenfor.