[Catalyst] TTSite redefines TT Catalyst Stash Var = C::P::Prototype example breaks

Benjamin R. Ginter bginter at ndevtech.net
Tue Jan 3 12:23:01 CET 2006


After not using Catalyst for a while, I picked it back up this evening but 
was immediately banging my head on getting the define_javascript_functions 
in Catalyst::Plugin::Prototype to actually define them.

Hrm, it says right here: [% c.prototype.define_javascript_functions %] .. 
yep, that's what I have in my template..  I racked my brain, searched the 
archives, searched the wiki, read and reread the docs..wtf.  :)

Finally, I dedid [% USE Dumper %] [% Dumper.dump_html( c ) %] in my 
message.tt2 and realized it was undefined.  Aha!

I had used myapp_create.pl view TT TTSite and that redefines the template 
toolkit 'c' catalyst stash variable as 'Catalyst'.  Maybe it shouldn't do 
this or I should have read that documentation better.

The simplest solution is to comment out the CATALYST_VAR key in 
lib/MyApp/V/TT.pm:

__PACKAGE__->config({
#    CATALYST_VAR => 'Catalyst',
     INCLUDE_PATH => [ "$root/src", "$root/lib" ],
     PRE_PROCESS  => 'config/main',
     WRAPPER      => 'site/wrapper',
     ERROR        => 'error.tt2',
     TIMER        => 1
});

Hope this saves someone else some time..

Ben

On Wed, 21 Dec 2005, John Wang wrote:

> On 12/21/05, raptor <raptor at tvskat.net> wrote:
>>
>> hi,
>> I'm tring this example :
>> http://www.dev411.com/wiki/AJAX_Select_Chaining_with_Catalyst
>>
>> but no success..
>
>
> There were two typos however I'm not sure they affected you since you
> weren't getting any JS. One was in the page.tt template and the other was in
> the controller. The wiki has been fixed and I have it running with those
> changes.
>
> I didn see any Js-code in the genrated displayForm page ?
>> What have to be installed for AJAX to work ?
>
>
> If there's no JS code, you probably need HTML::Prototype and
> Catalyst::Plugin::Prototype. In the page.tt template, [%
> c.prototype.define_javascript_functions %] will insert a lot of JS, however
> TT won't report an error if it can't find c.prototype. In your app you need:
>
> use Catalyst qw/Prototype/;
>
> I should probably get rid of the separate Controller in the example....
>
> HTH,
> John
>



More information about the Catalyst mailing list