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
1 2 3 4 5 6 7 8 9 10 11 12 | class miomoduloActions extends sfActions { public function executeIndex( $request ) { // ... } public function executeList( $request ) { // ... } } |
o divise in più file:
frontend/modules/miomodulo/actions/indexAction.class.php
1 2 3 4 5 6 7 | class indexAction extends sfAction { public function execute( $request ) { // ... } } |
frontend/modules/miomodulo/actions/listAction.class.php
1 2 3 4 5 6 7 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?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(“Hello, World!“);
return sfView::NONE;
Termina con il render ‘Hello world’, no vista
return $this->renderText(“Hello, World!“);
Reference:
http://symfony.com/legacy/doc/gentle-introduction/1_4/it/06-Inside-the-Controller-Layer