【问题标题】:How to re-route a laravel call internally (without redirect)?如何在内部重新路由 laravel 调用(没有重定向)?
【发布时间】:2015-09-05 04:27:52
【问题描述】:

在 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);
  • 这在 Laravel 4 中也可以正常工作。 Route::get('events', ['as' => 'events', function () { $request = Request::create(URL::toSite('lp/events'), 'GET'); 返回路由::dispatch($request); }]);

标签: php laravel-4 url-routing laravel-routing


【解决方案1】:

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

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

【讨论】:

  • 当我在远程客户端上使用它时,出现找不到路由错误。如果我 dd($otherroute) 显示正确的路线。当我将转储的路由复制粘贴到服务器上的浏览器中时,它可以工作。有什么建议吗?
猜你喜欢
  • 2018-07-22
  • 2014-09-16
  • 2019-07-23
  • 2022-01-26
  • 1970-01-01
  • 2017-04-12
  • 2016-05-05
  • 2021-07-22
  • 1970-01-01
相关资源
最近更新 更多