crud<T extends Model> method
Implementation
void crud<T extends Model>({String prefix = "", required CrudController controller, List<HttpMiddleware> middleware = const []}) {
String getModelPath() {
final loweredHyphenate = T.toString().replaceAllMapped(RegExp(r'(?<=[a-z])(?=[A-Z])'), (match) => '-').toLowerCase();
if(loweredHyphenate == 'model' || loweredHyphenate == 'type') {
return "";
}
return loweredHyphenate.endsWith("/") ? loweredHyphenate : "${loweredHyphenate}s";
}
final path = getModelPath();
if(path.isEmpty && prefix.isEmpty) {
throw Exception("Prefix or class constraint(T) recommended to generate resourceful routes. Generic crud methods (/index /create /show ... etc) as route paths cannot guarantee uniqueness or prevent overrides.");
}
if (!prefix.endsWith('/')) prefix = '$prefix/';
group(
prefix: "$prefix$path",
middleware: middleware,
routes: () {
// index
get("/", controller.index);
// create
get("/create", controller.create);
// store
post("/create", controller.store);
// show
get("/{id:int}", controller.show);
// edit
get("/{id:int}/edit", controller.edit);
// update
patch("/{id:int}/edit", controller.update);
// destroy
delete("/{id:int}", controller.destroy);
},
);
}