[Catalyst] storing a list of items into the session
Pierre Moret
pierre at sw2.ch
Sun Mar 23 16:52:44 GMT 2008
Hi,
I'm fairly new to Catalyst, so please excuse me if my questions are a
bit... hmmm... basic.
My app is using the authentication and authorization features as
described in Jonathan Rockway's book. So far so good. Now, I want the
login procedure to load a list of items (I call them 'mandators') into
the session data so that the list can be used in every template once the
user has logged in. Loading one single item works well, but storing the
whole list doesn't. Right now, I'm quite lost...
Here's my login function (from the Root.pm file):
---------------
sub login : Global Form {
my ($self, $c) = @_;
my $form = $self->formbuilder;
return unless $form->submitted && $form->validate;
if ($c->login($form->field('username'),
$form->field('password')))
{
$c->session->{mandator} = $c->model('MotsDB::Mandator')->find();
$c->session->{mandators} = $c->model('MotsDB::Mandator');
$c->flash->{message} = 'Login successful.';
$c->res->redirect($c->uri_for('/'));
$c->detach();
} else {
$c->stash->{error} = 'Login failed.';
}
}
---------------
And here's the template:
---------------
<!-- BEGIN site/right_col -->
[% IF Catalyst.session.mandator %]
[% Catalyst.session.mandator.code %]<br>
[% Catalyst.session.mandator.name %]<br>
[% END %]
[% IF Catalyst.session.mandators %]
[% FOR mandator = Catalyst.session.mandators %]
- [% mandator.code %]: [% mandator.name %]<br>
[% END %]
[% END %]
<!-- END site/right_col -->
---------------
The first part of the template correctly displays the first mandator
stored in the table. But the FOR loop doesn't work: it goes once
through, displays nothing and finishes.
I'm probably missing something very basic, but I really can't figure it
out... Would appreciate some hints! ;-)
Greets
--Pierre
More information about the Catalyst
mailing list