【问题标题】:Modifying Laravel 4 resource controller routes修改 Laravel 4 资源控制器路由
【发布时间】:2013-08-20 00:03:45
【问题描述】:

我想修改一些自动生成的 Laravel 路由,但我不确定这是否可行。

我有一个名为 Workspace 的模型(使用 Eloquent),我使用 artisan 创建了一个资源控制器。

php artisan controller:make WorkspaceController

我还在我的routes.php 文件中添加了使用此命令的路由。

Route::resource('workspace', 'PROJECT\Controllers\Workspaces\WorkspaceController');

由于我想使用 getIndex 列出可用资源,因此我希望索引路由为 workspaces 而不是 workspace,而我想保留其他场景的结构,例如 workspace/{id}/edit 等等开。

你知道如何修改Route::resource 创建的默认路由吗?

【问题讨论】:

  • 这并没有改变资源控制器的工作方式,而是通常会弄乱路由 - 您实际上希望将“工作区”和“工作区”资源分配给同一个“事物”。您可以使用 The Shift Exchange 的答案来执行此操作(路由到同一个控制器)。否则,您可以 extend the router 并根据需要将 Laravel 替换为您的扩展版本。
  • 我想真正的问题是:您这样做有充分的商业理由吗?有什么阻止您将/workspaces 路由到WorkspaceController@index 吗?
  • 谢谢,我决定最好自己定义所有路线,因为这样我可以更好地控制它们。

标签: php laravel laravel-4 eloquent


【解决方案1】:

你不能像这样“修改” resource() 路由。

您可以在 resource() 之上添加更多路由,或者单独定义每个路由,从而完全控制您的路由。

Read this blog about routes - it will shed some light on the issue

添加更多路线的示例,您可以执行以下操作:

 Route::get('extra', 'PROJECT\Controllers\Workspaces\WorkspaceController');
 Route::resource('workspace', 'PROJECT\Controllers\Workspaces\WorkspaceController');

注意额外的路由最好在 resource() 路由之前定义

【讨论】:

  • 好的,谢谢你的回答。很遗憾你不能定义单独的路由并且仍然使用 resource()。
猜你喜欢
  • 2014-02-18
  • 1970-01-01
  • 2013-06-04
  • 2014-10-08
  • 2013-08-08
  • 2014-07-08
  • 2018-01-16
  • 2013-06-25
  • 1970-01-01
相关资源
最近更新 更多