2015-06-19 102 views
5

在laravel中,給定的URL被路由到特定的控制器方法。在該方法中,我想返回響應,就好像用戶訪問了不同的路線一樣。我能做到這一點,像這樣:如何在內部重新路由laravel調用(無重定向)?

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

然而,這取決於我的硬編碼的類和方法的名字我想送他們。我寧願將它們發送到由路由名稱標識的另一個控制器,而不是控制器類的名稱。我怎樣才能做到這一點?

一種可能性是return Redirect::route($otherRoute),除了a)這是一個實際的重定向,這意味着它增加了頁面加載時間並替換了他們看到的url,以及b)它使得難以傳輸POST數據。所以,我不想這樣做。

我怎樣才能調用一個控制器,只知道它鏈接到的路由的名稱?

+0

在laravel 5使用 $請求=請求::創建( '/內部/位置', 'GET'); $ response = Route :: dispatch($ request); – Mruf

+0

這也適用於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}]); –

回答

0

正如@Mruf說,你可以嘗試:

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

當我在遠程clinet上使用它時,找不到路由錯誤。如果我dd($ otherroute)顯示正確的路線。當我在服務器上的瀏覽器中將轉儲的路由複製粘貼時,它可以正常工作。有什麼建議麼? – davejal