|
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
$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
$frontController = Zend_Controller_Front::getInstance();
$frontController->throwExceptions(false);
$frontController->setParam('noViewRenderer',true);
$frontController->setParam('noErrorHandler',false);
$frontController->setControllerDirectory(array( 'default' => APPLICATION_PATH.'controllers'));
$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() {
$this->initView();
$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:
$this->getResponse()->setHttpResponseCode(404);
$this->view->message = 'Pagina inexistenta';
break;
default:
$this->getResponse()->setHttpResponseCode(500);
$this->view->message = 'Eroare in aplicatie';
break;
}
$this->view->exception = $error->exception;
$this->view->request = $error->request;
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:
 |
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.
|