2015-06-19 12 views
5

W laravel, dany adres URL jest kierowany do określonej metody kontrolera. Wewnątrz tej metody chcę zwrócić odpowiedź tak, jakby użytkownik odwiedził inną trasę. Mogę to zrobić tak:Jak wewnętrznie przekierować wywołanie laravel (bez przekierowania)?

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

jednak, to zależy od mojego hardcoding z klasy i metody nazwy Chcę wysłać im. Wolałbym, aby wysłać je do innego kontrolera określonego przez nazwę trasy, a nie do nazwy klasy kontrolera. Jak mogę to zrobić?

Jedną z możliwości jest , z tym wyjątkiem, że a) jest to rzeczywiste przekierowanie, co oznacza, że ​​zwiększa czas wczytywania strony i zastępuje wyświetlany URL, oraz b) utrudnia przesyłanie danych POST. Więc nie chcę tego robić.

Jak mogę połączyć się z kontrolerem, znając tylko nazwę trasy, z którą jest połączony?

+0

w laravel 5 Zastosowanie $ request = Zapytanie :: create ('/ wewnętrzne/location', 'get'); $ response = Route :: dispatch ($ request); – Mruf

+0

To również działa dobrze w Laravel 4. Route :: get ('events', ['as' => 'events', function() { \t \t $ request = Request :: create (URL :: toSite ('lp/events'), 'GET '); \t \t return Route :: dispatch ($ request); \t}]); –

Odpowiedz

0

Jak powiedział @Mruf, można spróbować:

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

Kiedy używam tego na zdalnej klinice, trasa nie zostanie znaleziona, pojawia się błąd. Jeśli dd ($ otherroute) wyświetlana jest właściwa trasa. Po skopiowaniu i wklejeniu zrzuconej trasy w przeglądarce na serwerze działa. Jakieś sugestie? – davejal

Powiązane problemy