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(“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