我对Mojolicious很新。我试过在docs,StackOverflow和在线示例中研究这个。我还没有找到合适的答案。希望有人可以帮助我。
我有一个控制器方法/操作,应该显示用户的个人资料和帐户数据。在方法中,我从数据库中提取用户和帐户对象,并将它们推入存储区,以便模板可以访问它们。我使用Dumper
来确保它们存在于存储前预渲染时间。
MyApp::User
sub show_public_profile
{
my $self = shift;
return $self->render_not_found if ( ! defined $self->stash('username') );
my $user = MyApp::User->new( username => $self->stash('username') );
my $loaded = $user->load( speculative => 1 );
if ( defined $user && $loaded != 0 )
{
my $account = $user->account;
$self->stash( user => $user, account => $account );
$LOGGER->debug( 'pre-template stash: '. Dumper($self->stash) );
return $self->render;
}
else
{
return $self->render_not_found;
}
}
然而,一旦我点击了模板,我填充到藏匿处的任何内容仍然存在。
占位符/测试模板:user/show_public_profile.html.ep
% my $user = stash 'user';
% my $account = stash 'account';
<pre>stash = <%= dumper stash %></pre>
<pre>$user = <%= dumper $user %></pre>
<pre>$account = <%= dumper $account %></pre>
<h1>Profile for <%= $user->{'username'} %></h1>
不幸的是,模板的stash版本中不存在插入的“user”和“account”值:
stash = {
'action' => 'show_public_profile',
'controller' => 'user',
'mojo.captures' => {
'action' => 'show_public_profile',
'controller' => 'user',
'username' => 'test_user'
},
'mojo.routed' => 1,
'mojo.started' => [
1384869014,
663017
],
'username' => 'test_user'
}
关于我做错了什么的任何线索,在这里?我使用的是完整的Mojolicious,而不是Mojolicious :: Lite,大多数示例都是参考。而且,我已经尝试了我能找到的每个示例代码的排列。我错过了什么?
谢谢!