Mojolicious路由(十四)

一、快捷方式

为了让路由生成更有表现力,我们也可以在Mojolicious::Routes中添加自己的快捷方式add_shortcut。

# Simple "resource" shortcut
$r->add_shortcut(resource => sub ($r, $name) {
 
  # Prefix for resource
  my $resource = $r->any("/$name")->to("$name#");
 
  # Render a list of resources
  $resource->get('/')->to('#index')->name($name);
 
  # Render a form to create a new resource (submitted to "store")
  $resource->get('/create')->to('#create')->name("create_$name");
 
  # Store newly created resource (submitted by "create")
  $resource->post->to('#store')->name("store_$name");
 
  # Render a specific resource
  $resource->get('/:id')->to('#show')->name("show_$name");
 
  # Render a form to edit a resource (submitted to "update")
  $resource->get('/:id/edit')->to('#edit')->name("edit_$name");
 
  # Store updated resource (submitted by "edit")
  $resource->put('/:id')->to('#update')->name("update_$name");
 
  # Remove a resource
  $resource->delete('/:id')->to('#remove')->name("remove_$name");
 
  return $resource;
});
 
# GET /users         -> {controller => 'users', action => 'index'}
# GET /users/create  -> {controller => 'users', action => 'create'}
# POST /users        -> {controller => 'users', action => 'store'}
# GET /users/23      -> {controller => 'users', action => 'show', id => 23}
# GET /users/23/edit -> {controller => 'users', action => 'edit', id => 23}
# PUT /users/23      -> {controller => 'users', action => 'update', id => 23}
# DELETE /users/23   -> {controller => 'users', action => 'remove', id => 23}
$r->resource('users');

标签