Perl 如何在DBIx类模式中使用Mojolicious应用程序?

Perl 如何在DBIx类模式中使用Mojolicious应用程序?,perl,dbix-class,mojolicious,Perl,Dbix Class,Mojolicious,我有一个非常有趣的应用程序,它使用DBIx::Class。它工作得很好,但现在我想在DBIx::Class模式模块中使用Mojolicious app对象 在模板中,我使用此代码显示链接: <a href="<%= $self->url_for('playlist', name => $playlist->name) %>">...</a> 这是可行的,但需要将mojolicous应用程序传递到url(例如url($self)%%>),这并

我有一个非常有趣的应用程序,它使用DBIx::Class。它工作得很好,但现在我想在DBIx::Class模式模块中使用Mojolicious app对象

在模板中,我使用此代码显示链接:

<a href="<%= $self->url_for('playlist', name => $playlist->name) %>">...</a>
这是可行的,但需要将mojolicous应用程序传递到
url
(例如
url($self)%%>
),这并不好

是否有一种优雅的方法可以同时向所有DBIx::Class模式模块(可能是在应用程序启动期间)提供有趣的应用程序对象

这是我的应用程序
startup
例程中的架构初始化:

my $schema = MyApp::Schema->connect(
    'dbi:mysql:dbname=myapp',
    'xxxx',
    'xxxx',
    { mysql_enable_utf8 => 1, },
);
$self->helper( schema => sub { $schema } );

MVC应用程序中的模型应该解耦,以便也可以在应用程序之外使用

控制器的任务是从模型中获取数据并将其传递给视图


您的模板非常好,无需更改任何内容。

为什么不使用隐藏将数据传递给模板?
$playlist
使用隐藏将数据传递给模板
sub url {
    my $self = shift;
    my ($app) = @_;
    return $app->url_for('playlist', name => $self->name);
}
my $schema = MyApp::Schema->connect(
    'dbi:mysql:dbname=myapp',
    'xxxx',
    'xxxx',
    { mysql_enable_utf8 => 1, },
);
$self->helper( schema => sub { $schema } );