<div dir="ltr">Hi Henk<div><br></div><div>You should definitely have a read of this article. In summary, to minimise top level controller code and stop the lower level controllers treading on each others' toes, just let Plack do all the delegation work for you.</div><div><br></div><div><a href="http://advent.perldancer.org/2014/9">http://advent.perldancer.org/2014/9</a><br></div><div><br></div><div>Andrew</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Aug 6, 2015 at 12:08 PM, Henk van Tijen || <span dir="ltr"><<a href="mailto:henkvantijen@gmail.com" target="_blank">henkvantijen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi, perl programmer wannabee here;-)  Hope this question is suited for<br>
this list.<br>
<br>
In the examples of Dancer apps I've seen there are no separate<br>
Controller classes. The sub() handlers of the routes act as a sort of<br>
mini- controllers in the examples of the documentation. But as I am<br>
starting on a project that would grow in size, I'd like use full<br>
controllers classes, like for a dashboard view that pulls in data from<br>
many data source.  Where do I fit the controller classes hierarchy<br>
in?<br>
<br>
I’ve found his article<br>
<a href="http://fraley.de/2013/10/18/structuring-larger-dancer-applications/" rel="noreferrer" target="_blank">http://fraley.de/2013/10/18/structuring-larger-dancer-applications/</a><br>
that gives a starting point, the sample code is here<br>
<a href="https://github.com/pwfraley/DancerPrelaunch" rel="noreferrer" target="_blank">https://github.com/pwfraley/DancerPrelaunch</a><br>
<br>
In the Fraley code, the idea of a central routes table is done away<br>
with.  Instead, each controller defines its own routes it responds<br>
too. Good de-coupling practice, I suppose. But I like the default<br>
central MyDancer::App.pm package with a central routes table:<br>
- For one, it gives me in a glance an overview of all routes, the<br>
whole structure of the app.<br>
- But even more, it allows for constructs like ‘pass’ to group routes,<br>
conditionally skip routes (when not logged in or no session).<br>
- It provides a central lookaction for ‘hooks’ , process params,<br>
logging etc. (but a a base superclass Controller could be the place to<br>
do that too).<br>
<br>
On the examples of <a href="http://fraley.de" rel="noreferrer" target="_blank">fraley.de</a> , each controller has its own proper<br>
routes defined, but how do you combine that with the generics<br>
(loggedin, session, hooks, error) without repeating boiler plate code<br>
in each controller?<br>
<br>
To be more specific, I intend to structure my app along route definitions like:<br>
<br>
use MyDancer::Controller::FoobarController;<br>
get ‘/Foobar/jump’ => sub {<br>
    my $fb = FoobarController->new;<br>
    $fb->jump;<br>
};<br>
<br>
Is this okay or ‘ugh’  ?<br>
<br>
Any more considerations or advice or pointers on how to organize a<br>
Dancer2 app with controller classes are welcome!<br>
~henk<br>
_______________________________________________<br>
dancer-users mailing list<br>
<a href="mailto:dancer-users@dancer.pm">dancer-users@dancer.pm</a><br>
<a href="http://lists.preshweb.co.uk/mailman/listinfo/dancer-users" rel="noreferrer" target="_blank">http://lists.preshweb.co.uk/mailman/listinfo/dancer-users</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr">Andrew Solomon<div><br></div><div>Mentor@Geekuni <a href="http://geekuni.com/" target="_blank">http://geekuni.com/</a></div><div><a href="http://www.linkedin.com/in/asolomon" target="_blank">http://www.linkedin.com/in/asolomon</a><br></div></div></div>
</div>