E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Zend Framework (5)

Implementarea unui modul de stiri in Zend Framework. Partea I - Structura aplicatiei

21.02.2010
Implementarea unui modul de stiri in Zend Framework. Partea I - Structura aplicatiei

In acest tutorial va voi prezenta cateva lucruri legate de arhitectura MVC si implementarea unui modul de stiri in Zend Framework. El reprezinta prima parte dintr-o serie de tutoriale pe aceasta tema, care vor descrie implementarea unui modul cu toate functionalitatile de baza precum adaugarea, modificarea, stergerea si vizualizarea inregistrarilor dintr-un tabel, dar si lucruri mai complicate cum ar fi incarcarea de fisiere pe server, validari si mesaje de eroare.

Total vizualizari: 11423 11423 afisari   |   Comentarii  7   |   Rating   |   (9 voturi)   |   Timp necesar: 40 min 40 min   |   Nivel de cunostiinte necesar: Avansat  Avansat

Autor: alexandra Expert
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
« 1 2
comenteaza printeaza

Urmatorul pas este conectarea la baza de date. Bineinteles, aceasta poate fi inclusa in fiecare fisier in parte, dar eu iti recomand sa o lasi in bootstrap, astfel incat eventualele modificari sa fie realizate intr-un singur fisier:

<?php // conectarea la baza de date
 
$db = Zend_Db::factory('Pdo_Mysql',array( 'host' => DB_HOST,
            'username' => DB_USERNAME,
            'password' => DB_PASSWORD,
            'dbname' => DB_DATABASE));
 
$db->getProfiler()->setEnabled(true);
Zend_Db_Table_Abstract::setDefaultAdapter($db);
?>

Dupa cum poti observa, am apelat metoda factory a clasei Zend_Db, spunandu-i ca vrem sa ne conectam la o baza de date MySQL. Urmatoarea linie ($db->getProfiler()->setEnabled(true)) are rolul de a activa un tool al Zend_Db, si anume query profiler, care ne va ajuta sa afisam diferitele interogari realizate de MySQL si chiar sa aflam timpii de executie pentru fiecare.

Ultima parte a fisierului index, ce seteaza si porneste controller-ul default, este prezentata in continuare:

<?php // cream controller-ul default
$frontController = Zend_Controller_Front::getInstance();
 
// dezactivam aruncarea exceptiilor
$frontController->throwExceptions(false);
 
// dezactivam procesarea default a view-urilor 
$frontController->setParam('noViewRenderer',true);
 
// precizam ca vom folosi un controller de erori
$frontController->setParam('noErrorHandler',false);
 
// definim directorul default pt controllere
$frontController->setControllerDirectory(array( 'default' => APPLICATION_PATH.'controllers'));
 
// pornim controller-ul default
$frontController->dispatch();
?>

Controller-ul de erori

Ultimul lucru pe care va trebui sa-l facem inainte de a putea trece la implementarea propriu-zisa a aplicatiei este sa cream un controller de erori. Acesta va avea drept scop raportarea diferitelor erori care vor surveni pe parcursul implementarii. Iata structura fisierului ErrorController.php:

<?php class ErrorController extends Zend_Controller_Action { 
  
 public function init() {
  
  // Initializeaza view-ul
  $this->initView();
  
  // Seteaza calea catre fisierele .phtml
  $this->view->setScriptPath(APPLICATION_PATH.'views/');  
  
 }
 
 public function errorAction() {      
     
  $error = $this->_getParam('error_handler');
  
        switch ($error->type) { 
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:  
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
       
                // eroare 404 - controller sau actiune inexistenta
                $this->getResponse()->setHttpResponseCode(404);
                $this->view->message = 'Pagina inexistenta';
                break;
            default:
                // eroare in cadrul aplicatiei
                $this->getResponse()->setHttpResponseCode(500);
                $this->view->message = 'Eroare in aplicatie';
                break;
        }
        
       $this->view->exception = $error->exception;
       $this->view->request = $error->request;
       
       // randeaza si afiseaza view-ul
       echo $this->view->render('error.phtml');
    }
}
?>

Dupa cum poti observa, clasa ErrorController extinde clasa Zend_Controller_Action, ce reprezinta clasa parinte pentru orice controller din Zend Framework. ErrorController cuprinde doua metode:

  • init() - ce joaca rolul de constructor si este apelata automat la crearea unui obiect de tipul ErrorController;
  • errorAction() - ce are rolul de a procesa si de a afisa diversele erori, dintre care eroarea 404 (pagina inexistenta) este tratata separat.

Pentru ca este primul nostru controller, trebuie sa mentionam cateva lucruri:

  • Orice actiune dintr-un controller trebuie sa fie denumita cu litere mici, urmate de cuvantul cheie Action. De exemplu, o actiune afisarestiriAction dintr-un controller Stiri va fi apelata in browser astfel:

    http://www.domeniu.ro/public/Stiri/afisarestiri

  • Template-urile din Zend Framework au extensia .phtml si sunt localizate in directorul views. Ele pot include cod php, cum ar fi instructiuni conditionale, bucle foreach, etc., dar scopul lor ar trebui sa se limiteze la afisarea informatiilor furnizate de catre actiunile din controllere.

  • Pentru a incarca un template trebuie sa cream un obiect de tipul Zend_View. Datele sunt transmise catre template prin setarea proprietatilor acestui obiect ($obiectView->numar_stiri = 5 inseamna ca in template vom putea afisa numarul de stiri astfel: echo $this->numar_stiri).

Iata cum ar trebui sa arate structura aplicatiei tale pana la acest punct:

Implementarea unui modul de stiri in Zend Framework. Partea I - Structura aplicatiei

Structura aplicatiei

Cam atat pentru acest prim tutorial. In urmatoarea parte vom trece la implementarea propriu-zisa a modului nostru, si anume adaugarea si afisarea stirilor in si din baza de date MySQL.

Pagina:
« 1 2
comenteaza printeaza

Cuvinte cheie:   php,   mysql,   zend framework,   aplicatie,   stiri,   bootstrap,   model,   view,   controller,   mvc

Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(9 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
COMENTARII (7) spune-ti parerea
adytzul89 , Miercuri, 02 Octombrie 2013, ora 13:05
#7

Ce versiune de ZF s-a folosit pentru acest tutorial. Am descarcat pe site-ul oficial, dar nu pare in legatura cu tutorial.. foldere si fiserele sunt diferite..

Raporteaza acest comentariu ca injurios!
adry.ro adry.ro , Luni, 05 Septembrie 2011, ora 07:23
#6

Imi place, in special, cum ai explicat Arhitectura MVC. Se intelege perfect.

Raporteaza acest comentariu ca injurios!
cborodescu cborodescu , Marti, 23 Februarie 2010, ora 11:11
#5

Da, foarte bine explicat. ZF rullz!

Raporteaza acest comentariu ca injurios!
alext_1020 alext_1020 , Luni, 22 Februarie 2010, ora 17:39
#4

me like :D me happy :)

Raporteaza acest comentariu ca injurios!
alexandra alexandra , Luni, 22 Februarie 2010, ora 15:28
#3

Multumesc pt comentarii :)


@beuzozel

Continuarea o voi posta saptamana viitoare, implementarea este gata, dar am de lucru destul de mult la text. Sper sa iasa la fel de bine ca prima parte :).

Raporteaza acest comentariu ca injurios!
Pustiu Pustiu , Luni, 22 Februarie 2010, ora 14:56
#2

@alexandra: Bravo! mai iesim putin din sfera graficii ;)) si trecem pe programare :D

Raporteaza acest comentariu ca injurios!
beuzozel , Luni, 22 Februarie 2010, ora 10:01
#1

Pana acum foarte bun. Astept cu nerabdare urmatoarele tutoriale din aceasta serie. Sper sa te misti destul de repede. Spor la lucru :D

Raporteaza acest comentariu ca injurios!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
5040
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4995
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4840
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4815
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4615
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Verilog Gimp Flash Dreamweaver JSON Fotografie Ruby on Rails Excel Sony Vegas Swift 3D PHP Javascript XML Java HTML Word Python Outlook Fireworks Bridge Photoshop Lightroom CSS SEO SWF MySQL COREL DRAW Powerpoint AJAX Action Script RoR Vista XHTML StyleSheet PSD Illustrator
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software