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

时间:2015-09-08 07:21:26

标签: php laravel eloquent

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

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

现在,当我查看HomeInformationController.php时,我看到了用户创建的其他一些方法,但我没有看到商店方法,但是当我向资源发出帖子请求时,我得到了成功的201 CREATED回复。我的问题是,有没有办法在不打扰默认情况下执行的操作的情况下执行另一个操作?我知道我可以自己实现一个存储方法并以这种方式实现,但我想知道是否有办法保持它的方式,并且每次创建记录时都只执行默认操作。

另外,laravel如何创建记录,因为没有存储方法? laravel在创建资源时是否默认创建一个?它如何知道使用哪种型号?确实存在一个名为HomeInformation.php的模型。我搜索了Laravel文档,但没有找到任何内容。

谢谢。

1 个答案:

答案 0 :(得分:0)

当然可以。
让我们说你知道路线:

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

并且您知道除了创建和编辑之外,还有REST的方法(在HomeInformationController中)
所以您可以创建自定义路线并使用相同的控制器或其他控制器 例如:

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