2013-07-23 48 views
0

我有使用DBIx :: Class的Mojolicious應用程序。它工作正常,但現在我想在DBIx :: Class模式模塊中使用Mojolicious應用程序對象。如何在DBIx類模式中使用Mojolicious應用程序?

在模板中我使用此代碼顯示鏈接:

<a href="<%= $self->url_for('playlist', name => $playlist->name) %>">...</a> 

現在我想移動產生網址爲DBIx ::類架構模塊的代碼的一部分,從而使模板我能有這樣的:

<a href="<%= $playlist->url %>">...</a> 

我試圖通過建立在我的模式::結果sub url實現這一:: Playlist.pm

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 }); 
+0

爲什麼不使用存儲將數據傳遞給模板? – stevenl

+0

'$ playlist'通過隱藏傳遞給模板 –

回答

2

在MVC應用程序模型應該脫鉤,因此可以在應用程序之外使用過。

控制器的任務是從模型中獲取數據並將其傳遞給視圖。

您的模板非常好,無需更改任何內容。

相關問題