У меня есть Mojolicious приложение, которое использует DBIx :: Class. Он работает нормально, но теперь я хотел бы использовать объект приложения Mojolicious в модуле схемы DBIx :: Class.Как использовать Мохолическое приложение внутри схемы класса DBIx?
В шаблоне я использую этот код для отображения ссылки:
<a href="<%= $self->url_for('playlist', name => $playlist->name) %>">...</a>
Теперь я хотел бы перенести часть кода, который генерирует URL в модуль схемы DBIx :: Class, так что в шаблоне я мог бы это :
<a href="<%= $playlist->url %>">...</a>
Я пытался добиться этого путем создания sub url
в моей схемы :: Result :: Playlist.pm
sub url {
my $self = shift;
my ($app) = @_;
return $app->url_for('playlist', name => $self->name);
}
Это работает, но требует прохождения Mojolicious app до url
(например. <%= $playlist->url($self) %>
), что не приятно.
Есть ли элегантный способ обеспечить объект Mojolicious для всех модулей схемы DBIx :: Class сразу, возможно, во время запуска приложения?
Это моя инициализация схемы в моем приложении startup
рутины:
my $schema = MyApp::Schema->connect(
'dbi:mysql:dbname=myapp',
'xxxx',
'xxxx',
{ mysql_enable_utf8 => 1, },
);
$self->helper(schema => sub { $schema });
Почему вы не используете прикрытие для передачи данных в шаблон? – stevenl
'$ playlist' передается шаблонам с помощью stash –