2015-06-19 10 views
5

In Laravel wird eine gegebene URL an eine bestimmte Controller-Methode weitergeleitet. Innerhalb dieser Methode möchte ich die Antwort zurückgeben, als ob der Benutzer eine andere Route besucht hat. Ich kann dies tun, wie so:Wie lerne ich einen Laravel-Call intern umleiten (ohne Redirect)?

return App::make('OtherController')->otherMethod(); 

jedoch, das hängt von meiner hartzucodieren die Klassen- und Methodennamen Ich mag sie zu senden. Ich würde es vorziehen, sie an einen anderen Controller zu senden, der durch den Namen der Route identifiziert wird, und nicht den Namen der Controller-Klasse. Wie kann ich das machen?

Eine Möglichkeit ist return Redirect::route($otherRoute), mit der Ausnahme, dass a) dies eine tatsächliche Umleitung ist, was bedeutet, dass es die Ladezeit der Seite erhöht und die angezeigte URL ersetzt, und b) die Übertragung von POST-Daten erschwert. Also, ich will das nicht machen.

Wie kann ich einen Controller aufrufen, der nur den Namen der Route kennt, mit der er verbunden ist?

+0

in Laravel 5 Verwendung $ request = Request :: create ('/ intern/Lage', 'GET'); $ response = Route :: Versand ($ Anfrage); – Mruf

+0

Das funktioniert auch in Laravel 4. Route :: get ('Ereignisse', ['als' => 'Ereignisse', Funktion() { \t \t $ request = Anfrage :: create (URL :: toSite ('lp/events'), 'GET '); \t \t zurück Route :: Versand ($ Anfrage); \t}]); –

Antwort

0

Wie @Mruf sagte, könnten Sie versuchen:

return \Route::dispatch(\Request::create($otherRoute, 'GET')); 
+0

Wenn ich dies auf einem Remote-Clinet verwende, wird die Route nicht gefunden Fehler erscheint. Wenn ich dd ($ otherroute) die richtige Route angezeigt wird. Wenn ich die entleerte Route im Browser auf dem Server kopiere, funktioniert es. Irgendwelche Vorschläge? – davejal