resource static method
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;
}