[Catalyst] PathPart help
Jason Kohles
email at jasonkohles.com
Mon Nov 19 14:20:05 GMT 2007
On Nov 17, 2007, at 6:40 AM, Matt S Trout wrote:
> On Fri, Nov 16, 2007 at 01:50:03PM -0500, Jason Kohles wrote:
>>
>> I keep planning to dig into the dispatcher and figure out how to
>> implement this (and multiple PathParts), but never enough TUITs...
>
> I intentionally -didn't- implement this when I wrote Chained; as
> soon as
> you do that the $c->uri_for($action, ...) syntax becomes ambiguous
> and a
> whole host of other problems crop up.
>
Hmm, I hadn't dug into it far enough to discover those issues, I still
feel like I'm just on the edge of really understanding how the
dispatcher works, but not quite there yet. :)
> What I'd do instead is -
>
> package MyApp::Controller::Foo;
>
> use base qw(MyApp::ControllerBase::Chains);
>
> __PACKAGE__->config(object_chains = [ qw(id name email) ]);
>
> sub id ...
> sub name ...
> sub email ...
>
> Now, when Catalyst creates the Controller::Foo instance the stuff
> after the
> component method will create Controller::Foo::Id, ::Name, ::Email -
> Catalyst
> will automatically pick this up (the same way it picks up the sub-
> models
> created by e.g. Model::DBIC::Schema) and will load the Foo/Id.pm
> etc. files
> afterwards -if- they exist.
>
> That way you'll get /foo/id/edit, /foo/name/edit etc. actions which
> can be
> passed happily to $c->uri_for without ambiguity, and still have
> minimal
> repeated code.
>
That's pretty slick, you just saved me a whole lot of repetitive
typing on my current project...
--
Jason Kohles, RHCA RHCDS RHCE
email at jasonkohles.com - http://www.jasonkohles.com/
"A witty saying proves nothing." -- Voltaire
More information about the Catalyst
mailing list