Controlerele Readyscript

Cuprins

Controlerele din ReadyScript sunt obiectele moștenitorilor din clasa RS :: Controller :: AbstractController. La pornire, controlerul efectuează o acțiune, care implică, de obicei, crearea de modele adecvate și afișarea vederilor necesare. Acțiunile sunt metode ale clasei controlerului, al cărui nume începe cu acțiunea. Acțiunea prestabilită pentru controler este numită Index. Se execută dacă acțiunea din cerere nu este specificată altfel.







ReadyScript are 2 concepte de controlere:

  • Controlerele frontale. Acestea sunt cele care vor lua imediat controlul de pe traseu atunci când deschideți o anumită adresă URL. Controlerele frontale lucrează și formează așa-numitul "conținut principal al paginii", care este afișat de obicei în zona centrală a paginii. Controlul frontal poate decide dacă să continue redarea paginii sau returul, de exemplu eroarea 404, sau să returneze fluxul de date fără a le împacheta cu cod HTML.
  • Controlerele de blocare. executați în procesul de redare a unui șablon sau a unei pagini specifice, în ordinea în care acestea sunt localizate în șablon sau în Builderul de blocuri. Controllerii blocurilor care practică, formează o anumită secțiune a codului HTML al paginii. Blocul de coduri HTML al controlorilor va fi întotdeauna doar o parte a paginii, deoarece înainte de alte module, este posibil ca o ieșire să fi fost deja generată și nu o pot anula.

Există clase de bază frontale și un bloc de controlori pentru partea client (frontend) și administrativ (backend).

Clasele de bază ale controlorilor din partea clientului sunt situate în spațiul de nume RS :: Controller.

La pornirea controlerului, se execută metoda exec. care verifică drepturile de a rula acest controler, iar dacă este suficient, acțiunea controlerului este declanșată.

Controlorul verifică drepturile la modulul de care aparține controlorul. Drepturile trebuie să fie mai mari sau egale cu valoarea specificată în proprietatea $ access_right a obiectului de controler. Implicit, această valoare este 1, adică Pentru a porni controlerul frontal, grupul de utilizatori din care se produce lansarea trebuie să aibă drepturi de acces minime la modulul corespunzător.

Controlerele frontale

Controlerii frontali din punct de vedere al codului sunt descendenți ai claselor RS :: Controller :: Front. Controalele front-end client trebuie să fie în namespace-ul ModuleName \ Controller \ Front. Controlerul frontal minim arată astfel:

Se recomandă ca controlerul de bloc să poată fi configurat cu un șablon în care rezultatul va fi afișat. Acest lucru vă va permite să plasați același bloc cu un alt afișaj pe o singură pagină. Pentru comoditatea dezvoltatorilor, clasa de bază RS :: Controller: StandartBlock, în care este specificat indexTemplate, este preinstalat în ReadyScript. Cele mai multe module de controler bloc care vin împreună cu sistemul sunt descendenții RS :: Controller: StandartBlock.

$ controller_title = 'Stiri proaspete',







$ controller_description = 'Afișează o listă de știri recent adăugate';

Clasele de bază ale controlorilor din partea administrativă sunt situate în spațiul de nume RS :: Controller :: Admin. Pentru panoul administrativ există și controale frontale și bloc. Pentru partea administrativă, există mai multe clase de bază pentru diferite scopuri:

Sunt prezente și controlorii de bloc în partea administrativă. De exemplu, în sistem există un bloc al modulului Photo. care este prezentă în formele diferitelor obiecte: mărfuri, articole.

Widget Controllers - folosit pentru a afișa widget-uri pe pagina principală a panoului administrativ. Sistemul recunoaște automat toți controlorii widget în spațiul de nume: MODULE_NAME \ Controller \ Admin \ Widget și le permite să fie afișate pe pagină.

Front-end controlorii proces cereri atunci când se deschide secțiuni din partea administrativă a elementelor de meniu.

Controalele CRUD conțin implementarea acțiunilor standard CRUD (Creare-Citire-Actualizare-Ștergere). Majoritatea controlorilor din partea administrativă sunt descendenți ai lui RS :: Controller :: Admin :: Crud.

Separat este necesar să se spună despre controlerul CRUD. Aceasta necesită informații minime pentru inițializare și este capabilă să organizeze pe deplin administrarea obiectelor ORM. Un astfel de controler nu are un mod de acțiune standard (acțiune), spre deosebire de alți controlori. Odată ce un astfel de controler este pornit cu o acțiune, de exemplu Index, acesta caută o metodă numită ajutor. și anume helperIndex. În metodă, trebuie inițializat un ajutor vizual, care va fi apoi utilizat pentru a construi elementele paginii. Rezultatul executării metodei helperIndex este stocat în proprietatea clasei și este disponibil mai târziu folosind metoda getHelper. Apoi, metoda actionIndex este executată, în care are loc acțiunea (încărcarea datelor din model sau salvarea elementelor), iar rezultatul este șablonul primit de la ajutor.

Această abordare este necesară pentru a permite altor module să modifice compoziția elementelor vizuale pe pagină. După formarea helper'a în sistem și, înainte de metoda cu acțiunea, evenimentul este declanșat controller.exec.SOKRASchENNOE_IMYa_KONTROLLERA.IMYa_DEYSTVIYa. care este trecut ca un parametru pentru ajutor. Acest eveniment poate fi procesat de orice abonat. Orice manipulator, de exemplu, își poate adăuga butonul în bara de instrumente sau poate adăuga o coloană suplimentară în tabel etc.

Un exemplu de controler simplu CRUD:

Următoarele proprietăți sunt, de asemenea, disponibile în controler:

Este de așteptat ca o acțiune de controlor returnează un șir de caractere cu datele HTML pentru a fi trimise la browser-ul, sau un obiect de punere în aplicare interfață RS :: Controler :: Rezultatul :: IResult sau RS :: Controler :: Rezultat :: ITemplateResult.

Dacă obiectul este returnat, sistemul va avea date mai structurate asupra rezultatului acțiunii controlerului. Datele finale trimise browserului sunt preluate din obiect apelând metoda getOutput ().

Interfața IResult presupune că puteți extrage și seta partea HTML a rezultatului din rezultatul folosind metodele getHtml și setHtml. Interfață ITemplateResult IResult se extinde și se adaugă capacitatea de a seta și a obține șablonul pentru redarea folosind metode setTemplate și getTemplate, precum și a obține variabile care ar trebui să fie trecut la șablonul prin metoda getTemplateVars.

Pentru a standardiza raspunsurile controlerului frecvent, clasa de baza RS :: Controller :: Rezultat :: Standart a fost dezvoltata in ReadyScript. Acesta implementează interfața ITemplateResult.

Ideea de a standardiza răspunsurile este cea mai mare parte relevantă pentru solicitările Ajax către server. Scalabilitatea este important, astfel încât serverul ca răspuns la o solicitare ajax nu a returnat HTML și JSON, care ar putea fi necesar să se bazeze pe secțiunea în cazul în care nevoia de expansiune. Pentru aceleași în sensul răspunsurilor controlorului, este logic ca JSON să aibă aceleași structuri de date și nume ale secțiunilor. Aceasta este sarcina standardului de răspuns RS :: Controller :: Rezultat :: Standard.

Răspunsurile serverului care formează obiectul standardizat RS :: Controler :: Rezultat :: Standard:

Dacă există o cerere ajax, atunci:

  • returnează JSON, în care codul de rezultat HTML va fi returnat în secțiunea html.

Dacă există o solicitare normală:







Trimiteți-le prietenilor: