2017-12-21 12 views
7

hereを参照)Mojoliciousで現在のテンプレート名にアクセスするにはどうしたらいいですか?私は、テンプレートツールキットと同じ方法で、テンプレート自体デバッグ目的のために</em>内側からMojoliciousの<em>にテンプレート名にアクセスしたい

きちんと動作しますが、それが参照する__FILE__変数現在のファイルであり、トップレベルのテンプレートではないため、レイアウトテンプレート内では役に立たないということです。

私も

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

を試してみたが、何の結果

は、それがすべてでMojoliciousのでは可能ですか?

+0

https://groups.google.com/forum/#!topic/mojolicious/f1SLFXSGRVkで、「<%= __FILE__%>」を使用することをお勧めします。 – simbabque

+1

@simbabqueラッパーテンプレート(レイアウト)で使用するとうまくいきません。 – simone

+0

の質問を参照してください。Sriはスレッドでコードの臭いをやっているとも言います。彼らはあなたが今それを行うことを可能にするものを実装していないようです。 – simbabque

答えて

0

これはわずかに異なる2つの方法で行うことができます。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__); 

、その後、レイアウトに変数を再利用:

<%= $template %>   

この場合、テンプレートだけでなく、接尾辞付きでallというファイル名が得られます。

テンプレートhereにインスパイアされ、テンプレートは内側にレンダリングされています。

関連する問題