Catalyst-ControllerRole-At
view release on metacpan or search on metacpan
At(:controller/:action/{id:Int})
At(./:action/{id:Int})
At(./:action/{}/)
Under(root) At(a/b/c/{id}/...)
Under(root) At($action/{id}/{date}
/)
sub myaction($view, $model) :At($local/{id}) {
$view->ok($model->find($id));
}
NamedFields(id=>$args[0])
sub myaction :At($local/{id:Int}?{page}{order:Int}) {
$_->view->ok($_->model->find($_{id})
|| $_->detach('/not_found'));
}
sub notfound :At($local/{id:Int}?{page}&{order:Int}) {
$_->view->not_found(message => "Id $_{id} is not in the database");
}
sub myaction :At($local/{u:User}?{page}&{order:Int}) {
$_->view->ok($_{u});
}
sub myaction($view, $model M::Schema::User::Result) :At($local/{id}) {
$view->ok($model->find($id));
}
Via(action)
Via(/path/to)
Via(../to)
Via(../:action)
Via(:up/:action)
?? What URL paths are mapped here
?? what does 'warn $_{id}' do?
?? Would :Via work as well as :Under?
At(/foo/{$:User.0}/{$:User.1}%{$:User.age}{$:User.name}
At(/user/{id:User}%{params*:User}
If a Type::Foo accepts context, then $c is part of any coercions
sub myaction(User $u) :At(/user/{id:User}) {
}
sub foo :Local Named(foo=>$arg[0],bar=>$query{id})
sub foo :At(./{id:User}) { ... }
sub foo :At(./{id:User,User.email}) { ... }
sub foo :At(./{id:User,User.email}) { ... }
sub user :At(./{id:User} { }
sub friend :Via(user) At({id:Friend[user:User.id
#######
sub myaction([$id1,$id2]->User $u) At(users/{id1:Int}/{id2:Int})
sub myaction([Arg,Arg]->User $u) At(users/{id1:Int}/{id2:Int})
# User isa Model::Type::User
sub myaction(User $u) Via(root) At(users/{User.0:id1}/{User.1:id2})
{
$_{User} isa Model::Schema::User::Result
}
OR
sub myaction([id1,id2]->User $u ==> UserResultSet)
Via(root) At(users/{id1:Int}/{id2:Int})
{
$_{User} isa Model::Schema::User::Result
}
is User->coerce([id1,id2])
Model::Types::User
sub ACCEPT_CONTENT {
( run in 0.275 second using v1.01-cache-2.11-cpan-1f129e94a17 )