2015-09-08 40 views
1

我已经接管它使用Laravel 4项目,和先前的开发人员创建的路线一个RESTful资源文件,如下所示:Laravel 4资源默认存储后执行操作

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

现在,当我看着HomeInformationController.php我看到用户创建的一些其他方法,但我没有看到商店方法,但是当我向资源发布post请求时,我获得了成功的201 CREATE响应。我的问题是,有没有办法执行另一个行动,而不会打扰它默认已经在做的事情?我知道我可以自己实现一个存储方法,并且这样做,但是我想知道是否有办法保持它的方式,并且每次创建记录时都只执行一个默认操作。

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

谢谢。

回答

0

当然可以。
比方说,你知道路线:

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

,你知道,有REST除外创建和编辑的方法(在HomeInformationController)。

因此您可以创建自定义路线并使用相同的控制器或其他控制器。
例如:

Route::get('some/custom/route', array('uses' => '[email protected]')); 
Route::post('some/custom/route/that/handles/post', array('uses' => '[email protected]')); 

,并添加到您的控制器:

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



与参数:

Route::get('some/custom/route/{id}', array('uses' => '[email protected]')); 
Route::post('some/custom/route/that/handles/post/{id}', array('uses' => '[email protected]')); 

,并添加到您的控制器:

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



阅读关于此处的路由:http://laravel.com/docs/4.2/routing

相关问题