Thank you!

That is exactly the information and head start I was after.

Now I have to name my first born son Christopher. 3 daughters so far, so you may have to settle for Christina.

Thanks again,
Brian


Christopher Heschong wrote:
Yep. The one thing that confused me and has confused every new developer on my team is the "View" in Catalyst's Model/View/Controller. They always expect that's where they'll generate the HTML or whatever, ala PHP. This isn't exactly the case. 99% of the time you'll have Catalyst create a Template Toolkit view for you, which will basically be empty. That's the only code (usually) that will go in your Yourapp/lib/Yourapp/View/ directory. What you're likely to expect the "View" part to be is really the template files you put in the Yourapp/root/ directory, and that's not always clear at the start. These template files are to some extent the "View", but they don't sit in the View directory. Getting a good grasp of the MVC structure of Catalyst is key.

Basically most of the actual perl code you write won't display anything, it will just set variables in the stash, and your template files (in root) will display those variables.

The Intro in the Catalyst manual is pretty good:

http://search.cpan.org/dist/Catalyst-Manual/lib/Catalyst/Manual/Intro.pod

Tons of info on the Catalyst Wiki (some of it out of date):

http://dev.catalystframework.org/wiki

Tons of example code here:

http://dev.catalystframework.org/browser/trunk/examples

Another handy example:

http://www.herlpacker.co.uk/tech/development/projects/parley/

And this is fun:

http://search.cpan.org/search?m=all&q=Catalyst+Plugin <http://search.cpan.org/search?m=all&q=Catalyst+Plugin>


When I was learning TT, it took me a while to realize that the docs weren't in the Template pod, it was in the Template::Manual::* pod docs:

http://search.cpan.org/dist/Template-Toolkit/lib/Template/Manual/Intro.pod
http://search.cpan.org/dist/Template-Toolkit/lib/Template/Manual/Syntax.pod


For PHP-style parameter arrays, take a look at Catalyst::Plugin::Params::Nested:

<input name="search[name]" />
<input name="search[address]" />

turn into a hashref you can pass around, or access directly:

my $foo = $c->req->param('search');
$foo->{name};
$foo->{address};

This is really nice when you want to do something like this:

sub search : Local {
my ($self, $c) = @_;
$c->stash->{results} = $c->model('Something')->search(
$c->req->param('search')
);
}

which will basically connect to the database, do a "SELECT * FROM some_table WHERE name = '<form input>' AND address = '<form input>'", grab the results, stick them in the stash, and then it's off to your template (named search.tt by default since the sub is called "search") to display. Of course, in the real world you probably want to check the input a little more stringently, but DBIx::Class does prevent quite a few SQL-injection type attacks by using something called binding... anyway, I'm getting off the subject.

Hope that helps you get started.

_______________________________________________
List: [email protected]
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to