2009-06-10 4 views
6

Ich baue eine URL innerhalb einer Klasse und ich würde gerne in der Lage sein, das Routing bei Bedarf später zu ändern, indem ich einfach die routing.yml Datei ändere.In Symfony, wie kann ich den URL_for Helfer in einer Klasse verwenden?

Wenn ich die Strecke haben:

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

Wie kann ich die url_for ('userSignup') Helfer in einer Klasse, um dynamisch die URL zu erstellen?

Antwort

11

Sie brauchen nicht die Ansicht Helfer in Ihrer Aktion zu verwenden, um eine URL zu generieren:

$this->generateUrl("userSignup"); 

Das Verfahren ist definiert in sfComponent.class.php. Dies ist der empfohlene Weg, nicht die hacky Umgehung des Ladens der Ansichtshelfer und deren Verwendung.

12

Ich habe nur versucht, dies mit 1.2, so kann ich nicht alle früheren Versionen sprechen ...

Von jedem Ihrer Klassen:

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

... dann können Sie mit der Verwendung jeder weiter der im URL-Helper definierten Funktionen.

+1

Ja verwenden, das funktioniert wie ein Zauber in 1.2. Aber ich bekomme - \t Die sfLoader :: loadHelpers() -Methode ist veraltet. Bitte verwenden Sie dieselbe Methode von sfApplicationConfiguration. – Failpunk

0

Sie sollten sfContext::getInstance() nicht verwenden, um die Konfiguration abzurufen.

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

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

sollten Sie

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