Lecția 5

În lecția precedentă, am învățat cum să lucreze cu baza de date și de a prelua informațiile din baza de date și afișa. Dar componenta noastră nu este încă în măsură să modifice sau să adauge noi înregistrări într-un tabel de baze de date.

In acest tutorial, adăugați o componentă la „Bună ziua“ în secțiunea Administrator a interfeței, cu care se poate lucra cu înregistrările din tabelul bazei de date.

În lecția precedentă, am învățat cum să lucreze cu baza de date și de a prelua informațiile din baza de date și afișa. Dar componenta noastră nu este încă în măsură să modifice sau să adauge noi înregistrări într-un tabel de baze de date.

In acest tutorial, adăugați o componentă la „Bună ziua“ în secțiunea Administrator a interfeței, cu care se poate lucra cu înregistrările din tabelul bazei de date.

Crearea unei structuri de bază

În principal, printre panoul de administrare este foarte similar cu o parte a site-ului. Punctul de intrare principală administratorului componentei are admin.hello.php fișier. Acest fișier este diferit de fișier hello.php care este utilizat pe site-ul, numai faptul că controlerul încărcat numele schimbat la HellosController. Controlerul pentru panoul de administrator, în mod implicit, de asemenea, numit controller.php, și este identic cu controlerul implicit pentru o parte a site-ului, cu diferența că în loc de un controler numit HellosController HelloController. Acest lucru înseamnă că operatorul implicit JController va încărca o listă de saluturi noastre.

cod Admin.hello.php la dosar:

Prezentare și modelul, respectiv, vederi / hellos / view.html.php și modele / hellos.php. Să începem cu modelul.

Modelul hellos

Modelul hellos este foarte simplu. Acum, ea are nevoie doar pentru a obține o listă de felicitări din baza de date. Acest lucru se va face în getData metoda ().

Clasa JModel a încorporat metodă sigură _getList (). Cu această metodă, putem obține o listă de înregistrări din baza de date.

Efectuarea unei anchete, vom obține o listă de înregistrări. Pentru a putea utiliza interogarea într-o altă metodă, vom crea o metodă _buildQuery privată (). care a transmis cererea _getList metoda () se va întoarce.

Acest lucru facilitează solicitarea de modificare, cum este numit din același loc.

Astfel, cele două metode sunt în clasa noastră: getData () și _buildQuery ().

_buildQuery () returneaza pur si simplu interogarea. Codul pentru această metodă este după cum urmează:

getData () metoda primește cererea și preia înregistrările din baza de date. Pentru a evita primirea acestei liste din nou atunci când reîncărcați pagina, metoda este de a stoca datele primite într-o proprietate protejată la o cerere ulterioară, el ar putea reveni pur și simplu datele anterioare. Acest lucru se face folosind proprietățile _data.

Iată codul metodei getData ():

Complet fișier modele / hellos.php va arata:

Crearea unui vizualizare hellos

Am creat doar un model pentru a obține datele. Acum doriți să afișați datele.

Ideea noastra are trei niveluri: primul este primit date de la modelul, iar al doilea introduce datele în șablon, iar al treilea arată metoda de afișare pentru a afișa ieșire (vizualizări / hellos / fișier view.html.php):

Hellos Crearea de șabloane

Modelul trebuie să primească date de la prezentarea și forma o concluzie. Șablonul va fi sub forma unui tabel simplu, care este creat folosind eticheta HTML (vizualizări de fișiere / hellos / tmpl / default.php):

În codul șablonului am creat o formă care conține un tabel cu numărul de rânduri, care va depinde de elementele variabile.

Acum am terminat crearea de prezentare a carcasei. Secțiunea administrativă a componentei noastre ar trebui să conțină cinci fișiere:
admin.hello.php
controller.php
modele / hellos.php
vizualizari / hellos / view.html.php
views / hellos / tmpl / default.php

Vă puteți înregistra acum aceste fișiere în instalare fișier XML și să vedem ce se întâmplă.

Lecția 5

Fig. 5.1. Aspect componentă în panoul de administrare.

Adăugarea de funcționalitate pentru interfața de administrare

Am creat doar secțiunea de componente de administrare, care afișează numai conținutul bazei de date.

Acum, adăugați butonul „Ștergere înregistrare“, „Schimbați înregistrarea“ și „Crearea de noi intrări“ în panoul de administrare. De asemenea, adăugați o legendă pentru bara de instrumente.

Acest lucru se poate face în vizualizarea. Pentru a adăuga butoane vor utiliza metodele statice ale JToolBarHelper de clasă.

Codul pentru reprezentarea arată astfel:

Această metodă de cod deleteList () are trei parametri: Primul parametru este un șir de caractere, cere utilizatorului pentru a confirma ștergerea. Al doilea parametru este sarcina, care este trimis împreună cu solicitarea (implicit este „eliminarea“), iar al treilea - textul care apare sub buton.

editListX () și addNewX () poate primi doi parametri suplimentari. Primul - o sarcină (în mod implicit - în consecință, editați și adăugați), al doilea parametru - textul care apare sub buton.

Prima linie este utilizată pentru a afișa JText metoda antet :: _. JText :: _ metodă caută un șir de text în componenta limba fișierului și returnează șirul tradus. În cazul în care traducerea nu este găsit, funcția returnează șirul trecut la ea. Prin urmare, în cazul în care componenta este tradus într-o altă limbă, trebuie să creați un fișier de limbă, inclusiv linii și traducerea acestora în limba dorită.

Creați steaguri și link-uri

Două butoane de mai sus vor fi create pentru a gestiona conturile existente. Pentru a specifica ce se înregistrează în baza de date, avem nevoie pentru a controla, trebuie să adăugați cutii în tabel pe care utilizatorul poate selecta elementul dorit. Acesta va fi implementat în șablonul nostru.

Pentru a adăuga semnalizatoare adăuga o coloană suplimentară în tabelul între cele două disponibile. Titlul coloană adăuga un steag, care poate fi folosit pentru a selecta sau pentru a reseta toate steagurile:

Adăugați casetele de selectare din fiecare rând va fi folosind clasa JHTML în care JHTML :: _ () metoda. care va crea cutii pentru noi. Adăugați următoarea linie la bucla nostru:

Apoi se adaugă celula între două existente:

Acum, adăugați un link care vă permite să sari direct la formularul de editare. Adăugați următoarele linii după apelul JHTML :: _ () metoda pentru a crea link-ul HTML:

Adăugarea unui link către o celulă care va afișa textul:

Acum, codul complet de fișier default.php va fi:

Acum am terminat cu hellos prezentarea robotului. Puteți începe componenta pentru a vedea rezultatele.

Lecția 5

Fig. 5.2. Componentele din panoul de administrare, cu o coloană suplimentară pentru steaguri.

Adăugarea de funcții la controler Hello

În această componentă a controlerului este acum afișează doar punctul de vedere. Dar ar trebui să fie în măsură să își îndeplinească sarcinile care sunt pornite de la ideea hellos: „add“, „modificați“ și „șterge“.

De fapt, funcțiile de a „adăuga“ și „schimbare“ sunt una și aceeași sarcină: ambele prezintă o formă de utilizator care vă permite să editați salut. Ele se deosebesc doar prin faptul că pentru „adăugați“ afișează un formular gol, și pentru „schimbare“ - o formă de date. Efectuarea sarcina de a „adăuga“ se va face de către un manipulator de sarcină „schimbare.“ Acest lucru este specificat în constructorul nostru:

Primul parametru JController :: registerTask este o problemă, a doua - metoda punerii sale în aplicare.

În primul rând, ia în considerare problema „schimbare.“ În acest caz, operatorul specifică prezentarea și layout-ul pentru o sarcină (în reprezentarea noastră caz ​​salut și dispunerea formei). Pentru a preveni lăsând înregistrările nesalvate deschise, subliniem, de asemenea, Joomla dezactiva meniul principal în timpul unei schimbări în semn de salut.

Sarcina noastră manipulant „schimbare“ este după cum urmează:

Crearea unui vizualizare Bună ziua

Buna reprezentare ar trebui să reflecte forma. permițând utilizatorului să editeze salut. Metoda de afișare este de a efectua câțiva pași simpli:

  1. primi date de la modelul;
  2. a crea o bară de instrumente;
  3. pune datele în șablon;
  4. provoca o metodă de afișare () pentru modelul de delimitare.

În cazul nostru, o editări vedere și adăugarea. Bara de instrumente componentă pentru a informa utilizatorul operațiunii de executare în prezent - „adăugare“ sau „editare“. Prin urmare, este necesar să se stabilească sarcinile îndeplinite.

Pentru a determina dacă există un nou record este creat sau editat, vom scrie pentru a introduce câmpul ID, care se va schimba în cazul în care sarcina este de a edita. Dacă aceasta este o problemă nouă, ceea ce înseamnă că valoarea sa nu va fi stabilită.

Bara de instrumente se va adăuga, de asemenea, două butoane: «salva» și «a anula». funcționalitate buton este în esență același, dar, în funcție de sarcina curentă va fi apărea butoane diferite. Pentru o nouă intrare va fi afișat butonul de anulare, iar în cazul unei modificări a existente - butonul de închidere.

Astfel, metoda de afișare va arata astfel:

Crearea unui modele Hello

Pentru prezentarea în partea noastră a datelor necesare. Prin urmare, este necesar să se creeze un model adecvat.

Modelul nostru va avea două proprietăți: _id și _data. _id va deține id-ul salut, _data - date.

Creați un constructor care ia _id cererii:

Pentru a obține datele din interogarea este utilizată metoda JRequest :: getVar (). Primul parametru este numele unei forme variabile. A doua opțiune - valoarea implicită pentru a atribui dacă valoarea nu este găsit. A treia opțiune - este numele hash pentru a obține valoarea get, posta, etc. iar ultima valoare - tipul de date care ar trebui să fie stabilite pentru valoarea.

Proiectantul va primi prima valoare din matrice și atribuie Cid _id.

) Metoda setId (poate fi utilizată pentru a seta _id. Schimbarea _id, pe care modelul nostru indică, înseamnă că punctele de date incorecte.

Prin urmare, stabilirea valorii _id, curatam _data proprietate:

În cele din urmă, avem nevoie de o metodă pentru a obține _data: getData ().

metoda verifică getData dacă valoarea este setată _data proprietăți. Dacă da, se va întoarce pur și simplu. În caz contrar, se obțin datele din baza de date.

crearea de formulare

Acum trebuie să creeze un formular pentru introducerea și editarea datelor. Din moment ce ne-am definit structura ca formă, forma va fi plasat în directorul de depunere tmpl alo fișier numit form.php:

În această formă, în plus față de un câmp de introducere ascuns în câmp id. Tocmai am pus-o în formularul, deoarece utilizatorul nu se schimba id-ul.

Realizarea functiilor

Acum, controlerul nostru îndeplinește doar două sarcini: „creație“ și „schimbare“. Componenta are, de asemenea, butoane pentru a salva, șterge înregistrări și anulări. Acum trebuie să scrie codul corespunzător pentru sarcinile care vor fi efectuate la apăsarea acestor butoane.

depozitarea

Pentru a pune în aplicare înregistrarea este salvat ar trebui să fie utilizat pentru a gestiona selectarea unor situații diferite, de exemplu, diferența dintre crearea unui nou record (cerere INSERT), și să actualizeze fișa (cerere de actualizare) existente.

Cadru Joomla! Aceasta simplifică multe sarcini. Clasa JTable simplifică managementul înregistrărilor în baza de date, fără a fi nevoie să vă faceți griji cu privire la scrierea SQL-cod care stau la baza acestor tranzacții. De asemenea, facilitează transferul de date de la HTML-forme în baza de date.

Crearea unei clase de masă

Clasa JTable are o clasă abstractă la care este posibil să se obțină clasele derivate pentru a lucra cu tabele specifice. Pentru a-l utiliza, trebuie doar pentru a crea o clasă care extinde clasa JTable, adăugați câmpurile bazei de date ca proprietăți și reatribuiți proiectantul pentru a specifica numele tabelei și cheia primară.

Aici este clasa JTable nostru:

În acest cod, am definit două câmpuri: ID-ul și salut. Apoi a fost definit constructorul. apelarea constructorului clasei părinte și trece numele tabelului (#__hello), numele câmpului este cheia primară (id), iar conectorii bazei de date obiect.

Acest fișier ar trebui să fie numit hello.php și tabele plasate într-un director în secțiunea de administrare a componentei noastre.

Realizarea funcțiilor în modelul nostru

Acum putem adăuga o metodă în modelul pentru a salva înregistrarea. Noi numim acest magazin metoda (). Această metodă va face trei lucruri: pentru a pune datele din forma în obiect TableHello. validați înregistrarea generată și de a salva înregistrarea în baza de date.

metoda de cod ar arata astfel:

Această metodă se adaugă la modelul de salut.

Metoda are un singur parametru, care este un tablou asociativ de date pe care le stoca în baza de date. Aceste date pot fi obținute cu ușurință din cerere, după cum va fi în continuare afișate.

Prima linie devine o referință la un obiect JTable. Dacă tabelul este numit în mod corect, nu putem indica un nume - clasa JModel știe unde să-l găsească. După cum vă amintiți, am numit clasa noastră de masă TableHello și puneți-l într-un fișier în directorul tabele hello.php. Dacă ați urmat aceste linii directoare, clasa JModel va crea automat un obiect.

A doua linie primește datele din formularul. Clasa JRequest face operațiunea foarte ușoară. În acest caz, vom obține toate variabilele au trecut prin metoda POST. S-au întors ca un tablou asociativ.

Restul este simplu - obținem, să verifice și să păstreze. bind () copii metoda de valorile din matrice la proprietățile corespunzătoare tabelei obiect. În acest caz, acesta copiază valoarea identificatorului și plecăciuni obiect TableHello.

verificare (), metoda verifică datele. În clasa JTable (), această metodă pur și simplu returnează true. Deși nu reprezintă nici o valoare, dar în viitor va permite de a verifica datele cu clasa TableHello. Această metodă poate fi remapate în TableHello clasă prin efectuarea verificărilor necesare.

magazin) metoda (va pune datele din obiectul în baza de date. Dacă ID-ul este zero, un nou record (INSERT), în caz contrar se va actualiza înregistrarea existentă (UPDATE) va fi creat. Adăugarea sarcinilor la controler

Acum sunteți pregătit să adăugați sarcina la controler. Având în vedere că problema se numește salva, ar trebui să numim „salveze“ metoda. Este simplu:

Aici avem nevoie pentru a apela modelul de magazin metoda (). Apoi, ar trebui să utilizați metoda setRedirect () pentru a redirecționa la lista de saluturi. Cerem, de asemenea mesajul să fie afișat în partea de sus a paginii.

Ștergerea unei funcții de intrare și de punere în aplicare în model

În modelul, vom obține o listă de identitate și de apel pentru îndepărtarea clasa JTable pentru a le șterge:

Pentru a obține date de la o interogare, o numim metoda JRequest :: getVar (). apoi apel șterge metoda () pentru a elimina fiecare rând. Salvați greșeli în model, oferim posibilitatea de a le obține mai târziu, dacă este necesar.

Efectuarea sarcinilor elimina controlerul

Eliminarea ca metoda salva (), este de economisire:

Anularea operațiunilor de editare

Tot ce trebuie să modificați întreruperea funcționării - redirecționeze la ideea principală:

concluzie

În aceste lecții, am implementat un mecanism simplu pentru componenta noastră. Acum, cu ajutorul unui panou de administrare are capacitatea de a modifica elementele afișate în vizualizarea. Știi că interacțiunea dintre modele, opinii și controlere. De asemenea, am arătat, puteți utiliza clasa JTable au acces la tabelele din baza de date. Puteti vedea, de asemenea, utilizarea de clasa JToolBarHelper pentru a crea panoul de butoane în componenta pentru a oferi un formular standard pentru diferitele componente.

lecții anterioare cu privire la elementele de bază de programare pentru Joomla 1.5: