在Laravel中为资源控制器添加新的方法。
在Laravel中为资源控制器添加新的方法。
我想知道在Laravel中是否可以添加新的方法到资源控制器中,以及如何操作。
我知道这些方法是默认的(index、create、store、edit、update、destroy)。现在我想添加额外的方法和路由到同一个控制器中。
这是可能的吗?
admin 更改状态以发布 2023年5月21日
是的,这是可能的。
在我的案例中,我添加了一个名为“data”的方法来处理HTTP POST方法中的“/data.json”请求。
这是我所做的。
首先,我们扩展Illuminate\Routing\ResourceRegistrar以添加新方法data
getResourceUri($name).'/data.json'; $action = $this->getResourceAction($name, $controller, 'data', $options); return $this->router->post($uri, $action); } }
之后,创建您的新的ServiceProvider或者使用AppServiceProvider。
在方法boot中,添加以下代码:
public function boot() { $registrar = new \App\MyCustom\Routing\ResourceRegistrar($this->app['router']); $this->app->bind('Illuminate\Routing\ResourceRegistrar', function () use ($registrar) { return $registrar; }); }
然后:
将其添加到您的路线中:
Route::resource('test', 'TestController');
通过php artisan route:list
进行检查,您将找到新的方法'data'