[Catalyst] [OT] ASP.NET MVC

Matt S Trout dbix-class at trout.me.uk
Sun Dec 16 20:06:44 GMT 2007


On Tue, Dec 11, 2007 at 07:59:48AM -0800, John Napiorkowski wrote:
> And with chaining you could create all the chained
> actions in a single class, or use the Chain(.) feature
> to spread this over a couple of controllers.  That's
> what I usually do, but then you sometimes end up with
> a mess of nearly empty controller classes.

I find they're usually only nearly empty at the beginning of development - by
the time the app's gone through a couple of iterations they aren't anymore
and you're glad you split things out.
 
> Then we also have :Local, which is also considered
> somewhat deprecated in favor of :Path

Wrong.

Although to be honest I don't really use anything except :Chained these days :)

> :Default which
> is recommended only for things like capturing bad URLs
> and directing to a not found page (or if you are
> clever, so sort of soundex or spelling correction to
> see if that would match a known url)

'default' and 'index' -are- deprecated.

You want

sub works_like_default :Path {

and

sub works_like_index :Path :Args(0) {
 
> Another potential disadvantage of this, besides the
> confusion, is that you end up which a Controller
> namespace generally having to map to your URI
> namespace, and if you need to change the URI namespace
> you end up renaming and moving controllers, around.

No. Really. Don't ever do this.

Chained doesn't pay attention to the controller name.

__PACKAGE__->config(prefix => 'foo')

changes the path prefix of the controller (for Path, Local,
LocalRegex) without affecting the controller name, action
namespace etc.

> What do the rest of you think?  What could be better
> or more clear in terms of best practices?  Because I
> think this is a place where a lot of newbies get lost,
> and compared to the 'there's only a single way to do
> it' method of using router classes, we can lose out. 

We could probably do with a 'guide to using Chained', and
I've been pondering a cleaner syntax for it but don't really
have anything I'm happy with yet.

Note also that as I keep telling people, setting action attributes
via config makes it trivial to do a central routing table; just
nobody seems to like the feature enough to write a guide to how to
do it :)

> Also if we could work up an example that showed the
> benefit of the Catalyst way that would also help us. 

The base class related examples I've posted a couple times demonstrate this.

If I work up an advent entry on them would you be willing to expand them for
the main manual?

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://chainsawblues.vox.com/            http://www.shadowcat.co.uk/servers/



More information about the Catalyst mailing list