如何选择控制器中的功能?

时间:2013-12-30 12:27:12

标签: php laravel-4 restful-url

我已经看到了以下功能,我不明白如何选择控制器中的功能?

class ProfilesController extends \BaseController {

  public function index() {}

  public function create() {}

  public function store(){}

  public function show($id){}

  public function edit($id){}

  public function update($id){}

  public function destroy($id){}

   }

对于 local.com/profiles ,它会调用index()函数并列出所有配置文件。要查看任何记录 local.com/profiles/99 ,它正在使用show()方法。 要编辑任何记录 local.com/profiles/99/edit ,它正在使用edit()

这些方法是自动创建的吗?请向我推荐任何有助于更好地理解Laravel的链接或文档。

3 个答案:

答案 0 :(得分:1)

提供给您的链接很好理解如何在Laravel中实现restful url,但您不知道什么是 restful

Laravel选择的方法命名,它是用于表示每种方法的作用的约定。它被称为CRUD

现在调用哪种方法取决于HTTP Request Method

GET     /resource                   index   resource.index
GET     /resource/create            create  resource.create
POST    /resource                   store   resource.store
GET     /resource/{resource}        show    resource.show
GET     /resource/{resource}/edit   edit    resource.edit
PUT/PATCH   /resource/{resource}    update  resource.update
DELETE     /resource/{resource}     destroy resource.destroy

为了避免在我们使用CRUD时出现冗余代码,我们使用resource controller

您必须将以下路线添加到 routes.php 和您已提供的控制器。

Route::resource('profile', 'ProfilesController');

与写作相同

Route::get('profile', 'ProfilesController@index'));
Route::get('profile/create', 'ProfilesController@create'));
Route::post('profile', 'ProfilesController@store'));
Route::get('profile/{id}', 'ProfilesController@show'));
Route::get('profile/{id}/edit', 'ProfilesController@edit'));
Route::put('profile/{id}', 'ProfilesController@update'));
Route::patch('profile/{id}', 'ProfilesController@update'));
Route::delete('profile/{id}', 'ProfilesController@destroy'));

如果要生成这些行。您可以使用Jeffreys Way generators.

请参阅Teach a Dog to REST以了解我在说什么。

答案 1 :(得分:0)

你可以在Router.php查看github Laravel页面 - > https://github.com/laravel/framework/blob/master/src/Illuminate/Routing/Router.php

检查resourceDefaults和addResource * functions :)

- 当然,请访问Laravel文档> http://laravel.com/docs/controllers您的工作需要信息..

答案 2 :(得分:0)

我假设您正在使用资源控制器http://laravel.com/docs/controllers#resource-controllers