댄서를 사용할 때 vmethod을 템플릿 툴킷에 추가하는 방법은 무엇입니까?댄서를 사용할 때 템플릿 툴킷에 vmethod를 추가하는 방법은 무엇입니까?
방법이없는 경우 토큰에 추가 된 기능을 수행하는 방법을 어떻게 추가 할 수 있습니까? /?
댄서를 사용할 때 vmethod을 템플릿 툴킷에 추가하는 방법은 무엇입니까?댄서를 사용할 때 템플릿 툴킷에 vmethod를 추가하는 방법은 무엇입니까?
방법이없는 경우 토큰에 추가 된 기능을 수행하는 방법을 어떻게 추가 할 수 있습니까? /?
는 Dancer에 TT에 custom vmethod를 추가하려면 직접 TT 덤비는의 비트가 필요 패키지 변수. Dancer::Template 개체가 기본 템플릿 개체에 대한 액세스를 제공하기를 바랍니다.
package mydancerapp;
use Dancer qw(:syntax);
# make sure TT module is loaded since Dancer loads it later in the request cycle
use Template::Stash;
# create list op vmethod, sorry its pretty trivial
$Template::Stash::LIST_OPS->{ uc_first } = sub {
my $list = shift;
return [ map { ucfirst } @$list ];
);
그것은 자신의 모듈 mydancerapp::TT
또는 mydancerapp::TT::VMethods
에이 이동 한 다음 기본 응용 프로그램 클래스에로드하는 것이 가장입니다 : 여기
는 댄서 경로에 갈 수 조각입니다. 그 다음 당신이 볼 수 잘 갔다 경우
# in route
get '/' => sub {
template 'index', { veggies => [ qw(radishes lettuce beans squash)] };
};
# in template: views/index.tt
<p>[% veggies.uc_first.join(',') %]</p>
: Radishes,Lettuce,Beans,Squash
당신의 출력에
그런 다음 같은 템플릿에서 사용할 수 있습니다. :)
은 내가 vmethod을 추가하는 방법에 대한 모르겠지만, 두 번째 것은 다음과 같이 할 수 있다고 생각 :
hook 'before_template' => sub {
my $tokens = shift;
$tokens->{myfunction} = sub { ... }; # OR ...
$tokens->{otherfunction} = \&other_func;
};
Dancer2에서이 작업을 수행 할 수 있습니다
hook before => sub {
my ($app) = @_;
$app->template_engine->engine->context->define_vmethod('list' => 'uc_first' => sub {
my $list = shift;
return [ map { ucfirst } @$list ];
});
};
나는 이런 식으로 뭔가를 시도하고 그래서 난이 질문을 게시 작동하지 않았다 .. 지금은 ^^ 작동 – bliof