2017-12-21 45 views
7

मैं टेम्पलेट का नाम, डीबगिंग उद्देश्यों के लिए स्वयं टेम्पलेट को अंदर से Mojolicious में उपयोग करने के लिए एक ही तरह से खाका टूलकिट (here देखें) करतामैं Mojolicious में वर्तमान टेम्पलेट नाम का उपयोग कैसे कर सकता हूं?

चर __FILE__ बड़े करीने से काम करता है चाहते हैं, लेकिन इसे को संदर्भित करता है वर्तमान फ़ाइल और शीर्ष स्तर के टेम्पलेट पर नहीं, जिसका अर्थ है कि यह एक लेआउट टेम्पलेट के अंदर बेकार है।

मैं भी

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

की कोशिश की है, लेकिन कोई परिणाम

Mojolicious में बिल्कुल संभव यह है?

+0

https://groups.google.com/forum/#!topic/mojolicious/f1SLFXSGRVk sri में '<% = __FILE__%>' का उपयोग करने का सुझाव दिया गया है। – simbabque

+1

@ सिंबैबक अगर यह एक रैपर टेम्पलेट (लेआउट) में उपयोग किया जाता है तो यह काम नहीं करता है - प्रश्न – simone

+0

प्रश्न देखें, थ्रेड में यह कोड गंध भी कर रहा है। ऐसा लगता है कि उन्होंने कुछ भी लागू नहीं किया है जो आपको अब तक करने की अनुमति देता है। – 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__); 

और फिर लेआउट में चर पुन: उपयोग:

<%= $template %>   

इस मामले में आपको प्रत्यय और सभी के साथ फ़ाइल का नाम मिलता है - न केवल टेम्पलेट।

here उत्तर के बाहर दिए गए टेम्पलेट्स के बारे में उत्तर से प्रेरित हो गया।

संबंधित मुद्दे

 संबंधित मुद्दे