resource static method

Route resource(
  1. String route,
  2. dynamic controller, {
  3. String? name,
})

resource route. controller is a controller class (a Type) from the container, or a controller object.

Route.resource('blog', BlogController);
Route.resource('blog', BlogController());

the routes are named blog.index, blog.create, blog.store, blog.show, blog.edit, blog.update and blog.destroy. the name is the path with . for /, without {params}. set name to use another one. a group name: is put in front.

Route.resource('blog', BlogController());

Implementation

static Route resource(String route, dynamic controller, {String? name}) {
  if (controller is Type) controller = Dox().ioc.getByType(controller);
  Route r = Route();
  String path = r._join(route);
  String base = name ?? route.split('/').where(_isNamePart).join('.');
  r._resourceRoute(
    HttpRequestMethod.GET,
    path,
    () => controller.index,
    '$base.index',
  );
  r._resourceRoute(
    HttpRequestMethod.GET,
    '$path/create',
    () => controller.create,
    '$base.create',
  );
  r._resourceRoute(
    HttpRequestMethod.POST,
    path,
    () => controller.store,
    '$base.store',
  );
  r._resourceRoute(
    HttpRequestMethod.GET,
    '$path/{id}',
    () => controller.show,
    '$base.show',
  );
  r._resourceRoute(
    HttpRequestMethod.GET,
    '$path/{id}/edit',
    () => controller.edit,
    '$base.edit',
  );
  r._resourceRoute(
    HttpRequestMethod.PUT,
    '$path/{id}',
    () => controller.update,
    '$base.update',
  );
  r._resourceRoute(
    HttpRequestMethod.PATCH,
    '$path/{id}',
    () => controller.update,
    null,
  );
  r._resourceRoute(
    HttpRequestMethod.DELETE,
    '$path/{id}',
    () => controller.destroy,
    '$base.destroy',
  );
  return r;
}