Laravel 4资源在默认存储后执行操作


Laravel 4 Resource perform action after default store

我接手了一个使用Laravel 4的项目,之前的开发人员在routes文件中创建了一个RESTful资源,如下所示:

Route::resource('home/information', 'HomeInformationController',
    array('except' => array('create', 'edit')));

现在,当我在HomeInformationController.php中查看时,我看到了用户创建的一些其他方法,但是我没有看到store方法,但是当我向资源发出post请求时,我得到了一个成功的201 created响应。我的问题是,有没有一种方法来执行另一个动作,而不打扰它已经默认做什么?我知道我可以实现一个存储方法自己和这样做,但我想知道是否有一种方法来保持它的方式,并简单地执行一个默认的动作,每次记录被创建。

另外,laravel是如何创建记录的,因为没有存储方法?当您创建资源时,laravel是否默认创建一个?它怎么知道使用的是哪个模型呢?确实有一个叫做HomeInformation.php的模型。我已经搜索了Laravel文档,但没有找到任何东西。

谢谢。

当然可以。
假设你知道路径:

Route::resource('home/information', 'HomeInformationController',
    array('except' => array('create', 'edit')));


你知道有(在HomeInformationController中)除了create和edit之外的REST方法。
所以你可以创建自定义路由,并使用相同的控制器或其他控制器。
例如:

Route::get('some/custom/route', array('uses' => 'HomeInformationController@existingMethodOrCustomMethod'));
Route::post('some/custom/route/that/handles/post', array('uses' => 'HomeInformationController@existingMethodOrCustomMethod2'));

并添加到您的控制器:

public function existingMethodOrCustomMethod(){/*implementation here*/}
public function existingMethodOrCustomMethod2(){/*implementation here*/}



与参数:

Route::get('some/custom/route/{id}', array('uses' => 'HomeInformationController@existingMethodOrCustomMethod'));
Route::post('some/custom/route/that/handles/post/{id}', array('uses' => 'HomeInformationController@existingMethodOrCustomMethod2'));

并添加到您的控制器:

public function existingMethodOrCustomMethod($id){/*implementation here*/}
public function existingMethodOrCustomMethod2($id){/*implementation here*/}



阅读路由在这里:http://laravel.com/docs/4.2/routing