2015-03-10 14 views
5

क्या एक twig फ़ाइल में वैश्विक चर सेट करना संभव है, ताकि मैं अन्य फ़ाइलों, मैक्रोज़ और ब्लॉक से उन चरों तक पहुंच सकूं।मैं एक ट्विग टेम्पलेट फ़ाइल के अंदर वैश्विक चर को कैसे परिभाषित कर सकता हूं?

उदाहरण के लिए, मैं variables.twig फ़ाइल चाहता हूं और इसमें मेरे चर सेट करें और फिर मैं इसे अन्य टेम्पलेट्स में शामिल कर सकता हूं।

मुझे पता है कि ढांचे से ग्लोबल चर सेट करना संभव है (उदा। सिम्फनी) लेकिन मुझे केवल ट्विग सुविधाओं का उपयोग करके समाधान चाहिए।

+0

[सिम्फनी 2 + ट्विग ग्लोबल वैरिएबल] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/9263903/symfony-2-twig-global-variables) – pbenard

उत्तर

15

Symfony2 विन्यास

का उपयोग करके आप Symfony2 उपयोग कर रहे हैं, तो आप अपने config.yml फ़ाइल में वैश्विक सेट कर सकते हैं:

# app/config/config.yml 
twig: 
    # ... 
    globals: 
     myStuff: %someParam% 

और फिर अपने आवेदन में कहीं भी {{ myStuff }} का उपयोग करें।


Twig_Environment :: addGlobal

का उपयोग करके आप एक अन्य परियोजना में टहनी का उपयोग कर रहे हैं, तो आप वातावरण में सीधे अपने वैश्विक सेट कर सकते हैं:

$twig = new Twig_Environment($loader); 
$twig->addGlobal('myStuff', $someVariable); 

और फिर अपने आवेदन में कहीं भी {{ myStuff }} का उपयोग ।


एक टहनी विस्तार

आप वैश्विक चर के बहुत सारे है और आपके आवेदन केवल, आप एक टहनी एक्सटेंशन बना सकते हैं के किसी विशेष भाग के लिए वैश्विक का एक सेट निर्दिष्ट करना चाहते हैं का उपयोग करना:

class Some_Twig_Extension extends Twig_Extension implements Twig_Extension_GlobalsInterface 
{ 
    public function getGlobals() 
    { 
     return array(
      'someStuff' => $this->myVar, 
      // ... 
     ); 
    } 

    // ... 
} 

फिर अपने वातावरण में आयात केवल जब आवश्यक:

$twig = new Twig_Environment($loader); 
$twig->addExtension(new Project_Twig_Extension()); 

और अभी भी अपने आवेदन में कहीं भी {{ myStuff }} का उपयोग करें।

आप टहनी कोड का एक टुकड़ा शामिल कर रहे हैं जब एक टहनी टेम्पलेट

का उपयोग करना, आप केवल प्रदान की गई राय यह है कि कोड, नहीं कोड से ही आ रहा है शामिल कर रहे हैं। तो यह डिज़ाइन द्वारा वैरिएबल का एक सेट शामिल करना संभव नहीं है जिस तरह से आप खोज रहे हैं।

+0

विकल्प प्रदान करने के लिए बहुत अच्छा, गहन उत्तर, धन्यवाद config.yml समाधान के लिए बस! @ alain-tiemblo –

+0

बस एक नोट: GetGlobals() विधि को बहिष्कृत कर दिया गया है। –

+0

दूसरी विधि मेरी समस्या हल! धन्यवाद ! : डी –

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

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