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