2016-08-15 99 views
2

当使用RESTful资源控制器时,我们可以使用route :: resource()来处理,但是这些URI似乎是默认的。Laravel 5.2中的Route ::资源更改路径名称?

+--------+-----------+--------------------+---------------+---------------------------------------------+------------+ 
| Domain | Method | URI    | Name   | Action          | Middleware | 
+--------+-----------+--------------------+---------------+---------------------------------------------+------------+ 
|  | GET|HEAD |/    |    | Closure          | web  | 
|  | GET|HEAD | items    | items.index | App\Http\Controllers\[email protected] | web  | 
|  | POST  | items    | items.store | App\Http\Controllers\[email protected] | web  | 
|  | GET|HEAD | items/create  | items.create | App\Http\Controllers\[email protected] | web  | 
|  | GET|HEAD | items/{items}  | items.show | App\Http\Controllers\[email protected] | web  | 
|  | PUT|PATCH | items/{items}  | items.update | App\Http\Controllers\[email protected] | web  | 
|  | DELETE | items/{items}  | items.destroy | App\Http\Controllers\[email protected] | web  | 
|  | GET|HEAD | items/{items}/edit | items.edit | App\Http\Controllers\[email protected] | web  | 
|  | POST  | register   | signup  | App\Http\Controllers\[email protected] | web  | 
|  | GET|HEAD | signup    |    | Closure          | web  | 
+--------+-----------+--------------------+---------------+---------------------------------------------+------------+ 

(忽略第一个和最后两个,我们正在寻找的“items.something”路线)

我想,例如,更改“项目/制造”到“项目/新”。 在previous question上,答案是“否”,但由于问题已经过去一年多了,Laravel的发展似乎非常快,是否已经有解决方案?

回答

4

答案并没有真正改变。您无法直接自定义资源控制器操作。然而,有一种解决方法:您可以排除它并自己添加它。

首先让你的资源路线部分,并排除行动()你不想:

https://laravel.com/docs/5.2/controllers#restful-partial-resource-routes

Route::resource('items', 'ItemController', ['except' => [ 
    'create' 
]]); 

然后你就可以在另外添加自己的路线:

https://laravel.com/docs/5.2/controllers#restful-supplementing-resource-controllers

Route::get('items/new', '[email protected]'); 

请务必粘在resource路线之前,如文档中所述。

请注意,您可以可以自定义路线名称,就像您之前链接到的线程所述。

+0

太糟糕了没有一个真正的方法,但我没有想到偏微分。谢谢一堆! – Rafael

+1

那么这回答这个问题,但哟!无论是使用':: resource'快捷方式还是声明所有的路由,它都可以很方便地理解这种情况。 – Steve

+1

@Steve我完全同意。我已经停止使用'resource'并且明确指定了所有的路由。我喜欢看到发生了什么。 – jszobody