[Rio-pm] ajuda Mojolicious - template e storable

breno breno em rio.pm.org
Quarta Abril 7 07:53:40 PDT 2010


Grande Donato!

O sistema de templates do Mojolicious converte pra variável tudo que
está no stash, mas trabalha em modo strict e não faz mágica, então se
stash->{invoices} não existe, ele não materializa e morre com erro.
Portanto você pode fazer ou assim:

my $invoices;
if ( my $user = $self->session->{user} ) {
      $invoices = $user->invoices;
}
$self->stash( invoices => $invoices );

ou assim:

my $user = $self->session->{user};
$self->{invoices} = defined $user ? $user->invoices : undef;

ou simplesmente trocar a referência em seu template, de:

<%= $invoices %>

para

<%= stash 'invoices' %>


É isso - qq coisa grita ;-)

[]s,

-b

2010/4/5 Donato Azevedo <donatoaz em gmail.com>:
> Pessoal,
>
> Estou fuçando no mojolicious só por brincadeira e estou com algumas dúvidas:
>
> A primeira é: eu tenho isso na minha ação:
>
> get '/' => sub {
>        my $self = shift;
>        if ( my $user = $self->session->{user} ) {
>                $self->stash->{invoices} = $user->user_invoices;
>        }
> } => 'index';
>
> E o meu template tem:
>
> <% if ( my $user = session 'user' ) { %>
>        USER: <%= $user->login %>
>        TESTE USERINVOICE: <%= $invoices %>
> <% } else { %>
>        NO USER!
> <% } %>
>
> No entanto, quando não usuário logado ($self->session->{user} é undef
> o mojolicious ao invés de renderizar "NO USER!", me dá um erro:
> Mon Apr  5 17:26:53 2010 error Mojolicious::Plugin::EplRenderer:67
> [3100]: Template error in "index.html.ep": Global symbol "$invoices"
> requires explicit package name at template line 7.
>
> Outro erro que tenho, é, se eu preencher o $self->stash->{invoices}
> com $schema->resultset('UserInvoices'); ele dá este erro ao executar:
> Unable to restore schema at ..\..\lib\Storable.pm (autosplit into
> ..\..\lib\auto\Storable\thaw.al) line 415
>
> any ideas?
> rgds,
> --
> Donato Azevedo
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>


Mais detalhes sobre a lista de discussão Rio-pm