Commit | Line | Data |
59fc9d16 |
1 | package CatalystX::ModelToControllerReflector; |
2 | use Moose::Role; |
3 | use namespace::clean -except => 'meta'; |
4 | |
6a2f1e96 |
5 | with 'CatalystX::DynamicComponent' |
6 | => { alias => { _setup_dynamic_component => '_setup_dynamic_controller' } }; |
59fc9d16 |
7 | |
8 | requires 'setup_components'; |
9 | |
10 | after 'setup_components' => sub { shift->_setup_dynamic_controllers(@_); }; |
11 | |
12 | sub _setup_dynamic_controllers { |
13 | my ($app) = @_; |
14 | my @model_names = grep { /::Model::/ } keys %{ $app->components }; |
15 | |
16 | foreach my $model_name (@model_names) { |
6a2f1e96 |
17 | $app->_reflect_model_to_controller( $model_name, $app->components->{$model_name} ); |
59fc9d16 |
18 | } |
19 | } |
20 | |
6a2f1e96 |
21 | sub _reflect_model_to_controller { |
22 | my ( $app, $model_name, $model ) = @_; |
23 | |
24 | my $controller_name = $model_name; |
25 | $controller_name =~ s/::Model::/::Controller::/; |
26 | |
27 | $app->_setup_dynamic_controller( $controller_name ); |
59fc9d16 |
28 | } |
29 | |
30 | 1; |
31 | |