2009-06-10 7 views
6

Sto costruendo un URL all'interno di una classe e mi piacerebbe poter cambiare il routing se necessario in seguito semplicemente cambiando il file routing.yml.In Symfony, come posso usare url_for helper in una classe?

Se ho il percorso:

userSignup: 
    url: /user/signup 
    param: { module: user, action: signup } 

Come posso usare il url_for ('userSignup') aiutante in una classe per creare dinamicamente l'URL?

risposta

11

Non è necessario utilizzare le guide vista nella vostra azione per generare un URL:

$this->generateUrl("userSignup"); 

Il metodo è definito in sfComponent.class.php. Questo è il metodo consigliato, non la soluzione hacky per caricare gli helper della vista e utilizzarli.

12

Ho provato solo questo con 1.2, quindi non posso parlare per tutte le versioni precedenti ...

Da qualsiasi delle classi:

sfContext::getInstance()->getConfiguration()->loadHelpers(array('Url')); 

... allora si può continuare con l'utilizzo di qualsiasi delle funzioni definite nell'help helper.

+1

Sì, questo funziona come un fascino in 1.2. Ma ottengo - \t Il metodo sfLoader :: loadHelpers() è deprecato. Utilizzare lo stesso metodo da sfApplicationConfiguration. – Failpunk

0

Non è necessario utilizzare sfContext::getInstance() per recuperare la configurazione.

// instead of using 
sfContext::getInstance()->getConfiguration()->loadHelpers('Url'); 

// use 
sfApplicationConfiguration::getActive()->loadHelpers(array('Url')); 
0

si dovrebbe usare

sfLoader::loadHelpers(array('Url'));