Laravel 5.3资源:改变行动

时间:2016-11-15 09:12:43

标签: php laravel

我是laravel的新手,现在使用的是v5.3。 使用route::resource

时是否可以更改被调用的方法
Route::resource('user','UserController');

+--------+-----------+---------------------------------+--------------+-----------------------------------------------------------------+--------------+
| Domain | Method    | URI                             | Name         | Action                                                          | Middleware   |
+--------+-----------+---------------------------------+--------------+-----------------------------------------------------------------+--------------+
|        | GET|HEAD  | GameServiceAPI/user             | user.index   | App\Http\Controllers\Interfaces\UserController@index   | web          |
|        | POST      | GameServiceAPI/user             | user.store   | App\Http\Controllers\Interfaces\UserController@store   | web          |
|        | GET|HEAD  | GameServiceAPI/user/create      | user.test    | App\Http\Controllers\Interfaces\UserController@create  | web          |
|        | DELETE    | GameServiceAPI/user/{user}      | user.destroy | App\Http\Controllers\Interfaces\UserController@destroy | web          |
|        | PUT|PATCH | GameServiceAPI/user/{user}      | user.update  | App\Http\Controllers\Interfaces\UserController@update  | web          |
|        | GET|HEAD  | GameServiceAPI/user/{user}      | user.show    | App\Http\Controllers\Interfaces\UserController@show    | web          |
|        | GET|HEAD  | GameServiceAPI/user/{user}/edit | user.edit    | App\Http\Controllers\Interfaces\UserController@edit    | web          |
|        | GET|HEAD  | api/user                        |              | Closure                                                         | api,auth:api |
+--------+-----------+---------------------------------+--------------+-----------------------------------------------------------------+--------------+

我想在不使用默认值(index,show,create,...)

的情况下调用我自己的方法

同样是“名称”列引用的内容,我发现我可以使用一些可以添加到资源的选项来更改它,但我不知道它的用途。

4 个答案:

答案 0 :(得分:0)

您无法更改这些方法,您应该使用create your own getpostput等路线,而不是使用resource路线。

name列是route name。您可以为as的任何路线设置它:

Route::get('some-path', ['as' => 'route-name', 'uses' => 'SomeController@comeAction'])

->name()

Route::get('some-path', `SomeController@comeAction`)->name('route-name');

答案 1 :(得分:0)

使用资源控制器的关键是它提供了基本的CRUD方法。

如果您想定义自己的路线,则需要使用Route::get()Route::post()Route::any()等。更改资源控制器的链接方法不可能

答案 2 :(得分:0)

您只需创建自己的路线,如下所示:

  

可用的路由器方法

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);

E.g:

Route::get('uri-path', [
    'as' => 'route-name', 
    'uses' => 'YourController@index'
]);

Docs

答案 3 :(得分:0)

您无法更改这些方法,但您可以禁用要更改的方法并添加自己的方法:

Route::resource('user', 'UserController', ['except' => ['edit']]);

Route::get('user/{id}/customEdit', 'UserController@customEdit');