Using Plain PHP

1. apps/frontend/modules/contenuto/actions/actions.class.php


<?php

class contenutoActions extends sfActions // estende la classe Symfony
{
  public function executeRedirect() // crea l'indirizzo - contenuto/redirect
  { 
  }// END function
}// END class

2. apps/frontend/modules/contenuto/templates/redirectSuccess.php


<p>Redirect to...</p>

<?php
header("location: http://www.lucedigitale.com");
exit;
?>

3. Point the browser at: http://localhost/jobeet/web/contenuto/redirect

redirect() function External Link

1. apps/frontend/modules/contenuto/actions/actions.class.php


<?php

class contenutoActions extends sfActions // estende la classe Symfony
{
  public function executeRedirect() // crea l'indirizzo - contenuto/redirect
  { 
      return $this->redirect('http://www.google.com');
  }// END function
}// END class

2. apps/frontend/modules/contenuto/templates/redirectSuccess.php


<p>Redirect to...</p>

3. Point the browser at: http://localhost/jobeet/web/contenuto/redirect

redirect() function Internal Link

1. apps/frontend/modules/contenuto/actions/actions.class.php


<?php

class contenutoActions extends sfActions // estende la classe Symfony
{
  public function executeRedirect() // crea l'indirizzo - contenuto/redirect
  { 
      $this->redirect('contenuto/mypage');// nomemodulo/nomepagina
      // oppure sintassi alternativa
      // $this->forward('nomemodulo', 'nomepagina');

      // il codice qui sotto non verrà eseguito perchè
      // redirect e forward sollevano un sfStopException per bloccare l'esecuzione di un'azione

  }// END function
  public function executeMypage() // crea l'indirizzo - contenuto/mypage
  { 
  }// END function
}// END class

NB: redirect cambia URL nel browser, forward NON cambia URL nel browser

2. apps/frontend/modules/contenuto/templates/redirectSuccess.php


<p>Redirect to...</p>

3. Point the browser at: http://localhost/jobeet/web/contenuto/redirect
It will render http://localhost/jobeet/web/contenuto/mypage

Redirect e Forward Condizionali

Symfony ha dei metodi condizionali per snellire la scrittura del codice, in particolare:
forwardIf(), forwardUnless(), forward404If(), forward404Unless(), redirectIf() e redirectUnless().


public function executeShow(sfWebRequest $request)
{
  // Doctrine cerca un parametro id nel DB
  $article = Doctrine::getTable('Article')->find($request->getParameter('id'));
 
  // Propel cerca un parametro id nel DB
  $article = ArticlePeer::retrieveByPK($request->getParameter('id'));
 
  // se non esiste dai errore 404 di Symfony
  if (!$article)
  {
    $this->forward404();
  }

Sintassi equivalente:


public function executeShow(sfWebRequest $request)
{
  // cerca nel DB
  $article = Doctrine::getTable('Article')->find($request->getParameter('id'));
  $this->forward404If(!$article); // errore 404 se non esiste
}
 

public function executeShow(sfWebRequest $request)
{
  // Cerca nel DB
  $article = Doctrine::getTable('Article')->find($request->getParameter('id'));
  $this->forward404Unless($article); // errore 404 a meno che esista, se esiste non da errore
}

Reference:
http://www.symfony-project.org/api/1_4/sfaction