1 package CatalystX::Routes::Role::Controller;
4 use namespace::autoclean;
6 requires 'register_actions';
8 after register_actions => sub {
12 for my $route ( $self->meta()->route_names() ) {
13 my ( $attrs, $method ) = @{ $self->meta()->get_route($route) };
15 $self->_add_cx_routes_action( $c, $route, $attrs, $method->body() );
18 for my $chain_point ( $self->meta()->chain_point_names() ) {
20 = @{ $self->meta()->get_chain_point($chain_point) };
22 $self->_add_cx_routes_action( $c, $chain_point, $attrs, $code );
26 sub _add_cx_routes_action {
33 my $class = $self->catalyst_component_name;
34 my $namespace = $self->action_namespace($c);
36 for my $key ( keys %{$attrs} ) {
37 my $parse_meth = "_parse_${key}_attr";
39 next unless $self->can($parse_meth);
42 = $self->$parse_meth( $c, $name, $attrs->{$key} );
44 $attrs->{$key} = [$value];
47 my $reverse = $namespace ? "${namespace}/$name" : $name;
49 my $action = $self->create_action(
53 namespace => $namespace,
58 $c->dispatcher->register( $c, $action );