2011-01-16 15 views
3

Ich versuche Parameter über eine normale Abfragezeichenfolgeflag passieren, als solche:Wie man normale Parameter in URL in Symfony übergibt?

/user/login?foo=bar&abc=123 

Leider nirgends alle Daten in einer Instanz von sfRoute scheinen Daten für params foo oder abc zu enthalten. Wie behebe ich das?

Edit: Hier ist der Code Ich verwende als pro Tom Anfrage:

/apps/api/config/routing.yml:

login: 
    url: /user/login 
    param: { module: user, action: login } 

/apps/api/modules/Benutzer/Aktionen/actions.class.php:

class userActions extends sfActions { 
    public function executeLogin(sfWebRequest $request) { 
     echo '<pre>'.print_r($this->getRoute(), true).'</pre>'; 
    } 
} 

das ist es. Die Ausgabe zeigt, dass $this->getRoute() keine Informationen über foo oder abc enthält, wenn ich sie in meiner Abfragezeichenfolge mit der URL "/ user/login? Foo = bar & abc = 123" übergebe.

+0

Matt, fügte ein Update hinzu. – Tom

+0

Matt ... hat noch ein Update hinzugefügt. – Tom

Antwort

2

Wenn die Variablen zugreifen, verwenden Sie das Objekt $ Anfrage nicht sfRoute:

$request->getParameter('foo') 

Sie in der Aktion sicher, dass die Funktion machen, die diese Anforderung params ist Empfang erklärt es als eingehendes Variable:

public function executeSomeAction($request) { } 

Wenn Sie nach dem Äquivalent von $_SERVER['QUERY_STRING'] in Symfony suchen, habe ich es nicht gefunden und würde mich interessieren.

UPDATE:

Ich denke, die Methode, die Sie verwenden nur die Route drucken. Ich denke, was Sie tun müssen, um dies zu erreichen, ist der Zugriff auf sie durch das Objekt $ request, wie ich bereits erwähnt habe. Zum Beispiel:

$params_typed = $request->getParameterHolder(); // ... and grab them from here 

... oder verwenden Sie die Server-Abfragezeichenfolge oder bearbeiten Sie die eingehenden Parameter einzeln.

Sorry, ich kann nicht mehr helfen.

SECOND UPDATE:

Eigentlich getestet nur eine kleine Idee:

, wenn Sie die params in Ihrem Routing definieren.yml wie folgt aus:

login: 
    url: /user/login 
    param: { module: user, action: login, foo: something, abc: something } 

Sie sie über zugreifen können:

$full_path = sfContext::getInstance()->getRouting()->getCurrentInternalUri(); 
+0

Aber ich versuche, die Parameter in sfDoctrineRoute zu verwenden, und es akzeptiert meine Parameter nicht, wenn ich sie in der Abfragezeichenfolge verwende. –

+0

Hat Ihre Routing-Regel sie in routing.yml? URL:/Benutzer/login /: foo /: abc ....? – Tom

+0

Nein, ich möchte nicht, dass sie Teil der Verzeichnisstruktur sind, ich möchte in die URL-Leiste tippen können:/user/login? Foo = bar & abc = 123 –

1

Beachten Sie, dass, wenn Sie die „extra_parameters_as_query_string verwenden: true "Parameter Sie müssen den letzten Stern Ihrer Route löschen:

default: 
    url: /:module/:action