1

我有两个单独的 Laravel 实例/站点在服务器上运行,并且希望能够从另一个中的代码生成指向命名路由的 URL。

例如,第一个实例中存在以下命名路由: Route::get('users/my_account', array('uses' => 'UsersController@myAccount', 'as' => 'my_account'))

在第二种情况下,我想为上面的路由生成一个 url。谁能想到一个干净的方法来做到这一点,而无需明确知道 url(即只知道路线“my_account”的名称)?

基本上我想将一个站点的 RouteCollection 暴露给另一个站点...

4

2 回答 2

0

这是一个非常有趣的问题。没有本地支持的方式来做到这一点,据我所知,它永远不会。

您可以尝试加载第一个应用程序的路由文件,解析它的配置(反向路由需要它),构造一个Router实例并使用它,但我相信它一点也不简单。

如果你有一个真的,我是说真的,使用反向路由的好理由,你可以尝试在第一个应用程序上构建一个小 API。该 API 应该接收必要的参数,在 中使用的参数url($params),并返回完整的 url(包括域和所有内容)。虽然,这会引入一些严重的性能问题。

恕我直言,坚持硬编码my_account,在第一个应用程序路由和/或控制器上留下评论,解释它在另一个项目中使用并继续:)

于 2013-08-22T14:09:41.123 回答
0

我可以称之为肮脏的把戏。假设您的文件系统中有以下结构,其中两个路径都是 Laravel 应用程序:

/path/to/apps/app1
/path/to/apps/app2

并且您想将路由文件从 app1 加载到 app2 中。你可以这样做:

include "../app1/apps/routes.php";
$url = URL::route('register');

瞧!但是,虽然它对我有用,但仍有一些要点需要考虑。

  • 包含该文件,肯定会覆盖该进程的当前路由集合。
  • 如果最后一个是真的,那么您在生成其他 URL 时可能会遇到问题,可能在您的视图中。
  • 域名将是当前 Laravel 实例的。这意味着您生成到 app2 中的 URL 将包含 app1 的域名。我相信这不是你想要的。但是您始终可以使用URL::route('register', null, false).
于 2013-08-22T14:15:01.693 回答