2017-12-21 32 views
7

나는 템플릿 툴킷Mojolicious에서 현재 템플릿 이름에 액세스하려면 어떻게해야합니까?

깔끔하게 변수 __FILE__ 작업 (here 참조) 않습니다 같은 방식으로, 디버깅을 위해 템플리트 자체 내부에서 Mojolicious 에서 템플릿 이름을 액세스하고 싶지만 그것은을 의미 현재 파일이며 최상위 레벨 템플릿이 아니므로 레이아웃 템플릿 내에서는 쓸모가 없습니다.

또한

<%= app->renderer->template_name %> 

을 해봤지만 결과

그것은 Mojolicious에 전혀 가능하지?

+0

https://groups.google.com/forum/#!topic/mojolicious/f1SLFXSGRVk에서 sri는 '<% = __FILE__ %>'을 (를) 사용하도록 제안합니다. – simbabque

+1

@simbabque 래퍼 템플릿 (레이아웃)에서 사용하는 경우 작동하지 않습니다. – simone

+0

질문을 참조하십시오. Sri는 스레드에서 코드 냄새를 맡기도합니다. 그들이 지금까지 할 수있는 것을 구현하지 않은 것 같습니다. – simbabque

답변

0

이 약간 다른 두 가지 방법으로 수행 할 수 있습니다

먼저 before_render 후크를 추가하고 변수를 설정하여. 그것은과 같이 플러그인 내부의 모든 팩을 쉽게 :

package Mojolicious::Plugin::TemplateName; 

use Mojo::Base 'Mojolicious::Plugin'; 

sub register { 
    my ($self, $app, $conf) = @_; 

    $app->helper('template' => sub { return shift->stash('mojo.template') }); 
    $app->hook(before_render => sub { 
      my $c = shift; 
      $c->stash('mojo.template', $_[0]->{template}) 
      }); 
} 

1; 

을이

<%= template %> 

두 번째로 같은 템플릿 내에서 사용, 그것은 템플릿 내에서 수행 할 수 있습니다 - 내부의 변수를 설정하여 템플릿 자체 :

% stash('template', __FILE__); 

하고 레이아웃 가변 재사용 :

,

이 경우 템플릿 만이 아닌 접미사가 붙은 파일 이름을 얻을 수 있습니다.

밖으로 내고있는 템플릿에 대해서는 대답 here에서 영감을 얻어야합니다.