Mojolicious — Вставка на страницу какого-либо блока

Короткий ответ: это делается через helpersПо материалам форума VPF::Perl:

Q:... Есть например сайт, показывающий информацию о книгах(товарах или ещё какой нить фигне,
что не суть важно). На некоторые страницы сайта надо выводить блок с рандомной подборкой этих книг.

...
$r->route('/')->to('index#main');
...
$r->route('/book/:id')->to('book#info');
...

Вот и суть вопроса: как к роутам "/" и "/book/:id" привязать вызов App::Book::random_list()
который и подгружает данные для шаблона ? В голову пришли следующие мысли:

1)bridge - замутить мост через "book#random_list" и втыкать в роуты на те страницы, где есть
этот рандомный блок. вариант какойто кривой и с роутами как то уродливо выходит

2)мутить через какой нить condition - тоже не особо красиво помоему.

3)вызывать "App::Book::random_list()" длямо из "App::Book::info()" - вроде самый адекватный
вариант, но не особо удобный тоже.

4)намутить helper, который и будет подгружать данные, мутить блок и вставлять его в шаблон -
тут минус в том, что как я понял, нужно выносить этот блок в отдельный файл

...

A:Самый нормальный вариант с helper.

Делаете helper, для него отдельный шаблон где-нибудь в templates/common/helper.html.ep

В хелпере возвращаете отрендереный шаблон

Ну и в любом шаблоне

bridge и condition для другого нужны.

Comments are closed.