Using Plain PHP
1. apps/frontend/modules/contenuto/actions/actions.class.php
1 2 3 4 5 6 7 8 | <?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
1 2 3 4 5 6 |
3. Point the browser at: http://localhost/jobeet/web/contenuto/redirect
redirect() function External Link
1. apps/frontend/modules/contenuto/actions/actions.class.php
1 2 3 4 5 6 7 8 9 | <?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
1 | <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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <?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
1 | <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().
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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