如何在Laravel内部重新路由调用(无需重定向)?

9
在laravel中,给定的url被路由到特定的控制器方法。在该方法内,我希望返回响应,就好像用户访问了不同的路由。可以通过以下方式实现:
return App::make('OtherController')->otherMethod();

然而,这取决于我硬编码想要将它们发送到的类和方法名称。我更愿意将它们发送到另一个由路由名称标识的控制器,而不是控制器类的名称。我该怎么做呢?
一种可能性是使用return Redirect::route($otherRoute),但是a) 这是实际的重定向,这意味着它会增加页面加载时间并替换他们看到的URL,b) 它使传输POST数据变得困难。所以,我不想这样做。
我如何调用一个控制器,只知道它链接到的路由名称?

在 Laravel 5 中使用: $request = Request::create('/internal/location', 'GET'); $response = Route::dispatch($request); - Mruf
这在 Laravel 4 中也可以正常工作。Route::get('events', ['as' => 'events', function () { $request = Request::create(URL::toSite('lp/events'), 'GET'); return Route::dispatch($request); }]); - Etienne Marais
1个回答

1

正如@Mruf所说,你可以尝试:

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

当我在远程客户端使用它时,会出现路由未找到的错误。如果我使用dd($otherroute),则会显示正确的路由。当我将转储的路由复制粘贴到服务器上的浏览器中时,它可以正常工作。有什么建议吗? - davejal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接