Voi începe cu o mică deviere.
Și totuși spune în mod corect, și capacitatea de a face unele forumuri (în special UNIX-ovyh) tipa direct - RTFM! Oricine nu înțelege întrebarea ochem - RTFM înseamnă „citește nenorocitele înregistrările!“. Asta e tot ce sunt de fapt aici la ceea ce: studierea și ceva încercând să scrie pe cadru, Yii, problema a apărut de intrare de filtrare din diferite caracterul „rău intenționat“ (AAL XSS-atac) și primul lucru care a venit în minte - este de a scrie un filtru (care eu încă mai făcut), dar creocoder, Yii este on-line, complet observat sprpavedlivo că de ce nu reinventeze roata, totul este deja gata, trebuie doar să RTFM! Era vorba despre clasa CHtmlPurifier, care este un înveliș pentru biblioteca Purificator HTML, și îndeplinește toate funcțiile care sunt necesare pentru mine (deși nu am poprobyval în acțiune, poate și cu siguranță nimic). Dar odată ce am început să scriu filtrul - am decis să termin în continuare acest lucru, și pur și simplu a scrie un articol despre filtrele din Yii.
Și așa!
Filtrele sunt fragmente de cod care pot fi executate înainte și / sau după executarea acțiunii controlerului. Filtrele, dacă este necesar, pot împiedica executarea acțiunii solicitate.
Filtrele pot fi atât metode ale controlerului curent, cât și clase individuale - ceea ce le permite să le reutilizeze. Dacă filtrul este implementat ca metodă de clasă, acesta trebuie să aibă prefixul "filter".
Un filtru implementat ca o clasă separată trebuie să fie un mostenitor al clasei CFilter.
Pentru a activa filtrele, este necesar ca controlerul să suprascrie metoda filtrelor, care trebuie să returneze o matrice a tuturor filtrelor pentru acest controler (sau acțiunile sale individuale).
În acest exemplu, „accessControl“ - regulator filtru implementat ca metodă, și „application.filters.XssFilter“ - filtru implementat ca o clasă separată, care este stocat în directorul / / filtre protejate /. 'clean' - setați proprietatea filtrului.
Aceasta a fost o scurtă referire la filtrele din Yii, mai multe detalii pot fi citite aici.
Acum vom începe imediat să implementăm filtrul nostru. Funcția de curățare a datelor, care face tot munca - am luat din cadrul Kohana. Ei bine, acest lucru este destul de cuvinte, voi aduce codul filtru în sine - este destul de simplu, așa că nu cred că ar trebui să existe probleme.
Am testat complet acest filtru - la prima vedere - funcționează!
Vreau să adaug comentariile mele la implementarea filtrelor în Yii ...
Cred că a fost util să existe o metodă care se numește înainte de a efectua prefiltru și postFilter, cum ar fi init () - care inițializează filtrul, astfel ar trebui să fie parametrii disponibili peredavemye în filtrul de la operator (din acest motiv, este imposibil de utilizat __construct). Desigur, puteți extinde CFilter pentru aceste scopuri, dar „nativ“ poate să facă acest lucru ar fi cea mai bună opțiune.
Sper că acest material va fi util!