On 30 Nov 2007, at 08:43, Emily Heureux wrote:

Ok, I think I've gotten the correct mailing list now. Unfortunately, my
company does not allow irc, so...

I would like to have more than one module in View, but I have not found how to set that up properly. I have spent a lot of time on cpan, reading the tutorial, and coding examples, experimented on my project, but my lack of experience with Catalyst makes it hard to find what I am missing. It looks like, from the suggestions I've gotten so far, that somewhere a default view is set (RenderView? end method?) that I need to alter. What I think would
be a correct way of starting is,
1.  Use the helper script to create a second TT View.
2. Somewhere, do something about the default behavior. (and what if in the
future I want more than 2 views?)



I haven't used multiple views before, so let's suck this and see.

First up:

catalyst.pl MyApp 2>&1 > /dev/null
/tmp$ cd MyApp/
/tmp/MyApp$ script/myapp_create.pl view TT TT
/tmp/MyApp$ script/myapp_create.pl view JSON JSON


let's make an index.tt:

<html>[% USE Dumper; Dumper.dump_html(data) %]</html>

alter myapp.yaml to add this:

default_view: JSON

rewrite the Controller::Root:

package MyApp::Controller::Root;

use strict;
use warnings;
use base 'Catalyst::Controller';

__PACKAGE__->config->{namespace} = '';

sub default : Private {
    my ( $self, $c ) = @_;
    $c->res->status(404);
    $c->response->body( '404 not found' );
}

sub index : Private {
    my ( $self, $c ) = @_;
    $c->stash->{current_view} = 'TT';
    $c->stash->{template}='index.tt';
}

sub json : Local {
    my ( $self, $c ) = @_;
}

sub end : ActionClass('RenderView') {
    my ($self, $c) = @_;
    $c->stash->{data} = [ $c->config->{default_view},
                          $c->stash->{current_view}
                      ];
}


1;


Next up we can fire up the server and make some requests. Here I'm using the GET function from lwp-perl:

$/tmp/myapp CATALYST_DEBUG=0 script/myapp_server.pl &
$/tmp/myapp GET http://localhost:3000

<html>$VAR1 = [<br>
          'JSON',<br>
          'TT'<br>
        ];<br>
</html>


$tmp/myapp GET http://localhost:3000/json
Data":["JSON",null]}


that's about it, hth.

If your business is serious about wanting to use catalyst and wants to leverage community support, ask them to open up their firewall, or run an instance of CGI::IRC that allows access to the #catalyst, #dbix-class and #tt channels on irc.perl.org





_______________________________________________
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[EMAIL PROTECTED]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to