In Symfony 1.4.22 le azioni caricano i modelli e definiscono le viste gestendo tutta la logica dell’applicazione web.
Identazione e Convenzioni
Per convenzione per l’identazione del codice non utilizziamo tabulazioni ma un doppio spazio.
Il codice php deve essere
File Singoli o più Files
Le azioni possono essere racchiuse in un file singolo:
frontend/modules/miomodulo/actions/actions.class.php
class miomoduloActions extends sfActions { public function executeIndex($request) { // ... } public function executeList($request) { // ... } }
o divise in più file:
frontend/modules/miomodulo/actions/indexAction.class.php
class indexAction extends sfAction { public function execute($request) { // ... } }
frontend/modules/miomodulo/actions/listAction.class.php
class listAction extends sfAction { public function execute($request) { // ... } }
Notare come il nome dei file e delle classi sono correlati.
sfView
Un metodo nomeAction deve sempre finire con un return verso la vista.
Creiamo:
apps/modules/contenuto/templates/pageoneSuccess.php -> operazioni avvenute con successo
apps/modules/contenuto/templates/pageoneError.php -> operazioni errate
apps/modules/contenuto/templates/pageoneMyresult.php -> operazioni con un mio risultato personalizzato
apps/modules/contenuto/templates/pagetwoSuccess.php -> operazioni avvenute con successo con template diverso
apps/modules/contenuto/actions/actions.class.php
<?php class contenutoActions extends sfActions // estende la classe Symfony { public function executePageone($request) // http://localhost/jobeet/web/frontend_dev.php/contenuto/pageone { // return sfView::SUCCESS; // return sfView::ERROR; // return 'Myresult'; // $this->setTemplate('pagetwo'); // nome template senza il suffisso Success // $this->getResponse()->setContent("<html><body>Hello, World!</body></html>"); // return sfView::NONE; // return $this->renderText("<html><body>Hello, World!</body></html>"); } }// END class
Vediamo caso per caso:
se metto il return -> punta per default pageoneSuccess.php
return sfView::SUCCESS; -> pageoneSuccess.php
return sfView::ERROR; -> pageoneError.php
return ‘Myresult’; -> pageoneMyresult.php
$this->setTemplate(‘pagetwo’); -> pagetwoSuccess.php
Termina col render Hello world, no vista.
$this->getResponse()->setContent(“
return sfView::NONE;
Termina con il render ‘Hello world’, no vista
return $this->renderText(“
Reference:
http://symfony.com/legacy/doc/gentle-introduction/1_4/it/06-Inside-the-Controller-Layer