【发布时间】:2013-07-23 08:16:49
【问题描述】:
我有使用 DBIx::Class 的 Mojolicious 应用程序。它工作正常,但现在我想在 DBIx::Class 模式模块中使用 Mojolicious 应用程序对象。
在模板中我使用此代码显示链接:
<a href="<%= $self->url_for('playlist', name => $playlist->name) %>">...</a>
现在我想将生成 url 的部分代码移动到 DBIx::Class 模式模块中,以便在模板中我可以有这个:
<a href="<%= $playlist->url %>">...</a>
我试图通过在我的 Schema::Result::Playlist.pm 中创建 sub url 来实现这一点
sub url {
my $self = shift;
my ($app) = @_;
return $app->url_for('playlist', name => $self->name);
}
这可行,但需要将 Mojolicious 应用程序传递给 url(例如 <%= $playlist->url($self) %>),这并不好。
是否有一种优雅的方式可以一次向所有 DBIx::Class 模式模块提供 Mojolicious 应用对象,可能在应用启动期间?
这是我在我的应用程序startup 例程中的架构初始化:
my $schema = MyApp::Schema->connect(
'dbi:mysql:dbname=myapp',
'xxxx',
'xxxx',
{ mysql_enable_utf8 => 1, },
);
$self->helper( schema => sub { $schema } );
【问题讨论】:
-
为什么不使用 stash 将数据传递给模板?
-
$playlist使用 stash 传递给模板
标签: perl dbix-class mojolicious