2016-03-24 18 views
0

Bir şey üzerinde çalıştığımdan beri uzun zaman oldu. Çok eski bir şablon ayrıştırıcısı kullanıyorum ve Twig'e geçmenin zamanı geldiğini düşündüm.Twig (non-symfony) genel değişkenler

Çok iyi görünüyor ve onunla çalışmak isterdim ama bir çözüm bulamadığım bazı problemlerle karşılaşıyorum. Sorumlulukla ilgili birkaç tane gördüm ama işe yaramıyor ve çoğu zaman onların katkısıyla.

Öyleyse açıklayayım;

İndeks.php'yi ana sayfa (ön denetleyici) olarak kullanır ve dosyamı içine eklerim. Ben base.html içinde görüntülenecek giriş bilgilerini vb. Gösteren bir sağ menü kullandığım için, her şablonda göstereceğim ... index.php dosyasında bir dizi globals ayarlamak için bir yol bulmalıyım .

$ twig-> addGlobal olduğunu biliyorum ('test', 'Bu benim testimdir); ama bunların çoğunu eklemeliyiz.

GetGlobals() ile bu Genişleme var ancak bunları orada sağlanan diziye el ile eklemelisiniz ve dizimi bir diziden geçirmenin bir yolunu bulamıyorum. Ayrıca baktığımda, bunun kullanımdan kaldırıldığını söylüyor.

Belki de ona bakıyorum veya Twig benim için bir çözüm değil mi? herhangi bir yardım burada, ve şimdiden teşekkürler edilir!

Nico.

cevap

1

bir dal uzantısı kullanabilir:

class MyTwigExtension extends Twig_Extension implements Twig_Extension_GlobalsInterface 
{ 
    private $some; 

    private $data; 

    public function __construct($some, $data) { 
     $this->some = $some; 
     $this->data = $data; 
    } 

    public function getGlobals() 
    { 
     $globals = array(); 

     // .. create globals by using the properties defined above 

     return $globals; 
    } 

    // ... 
} 

getGlobals yöntem, gerçekten uygun bulunmamaktadır, ancak dedikleri kod:

@değerden beri 1.23 (b için) 2.0 çıkarıldı e) yerine

Yani Twig_Extension_GlobalsInterface uygulamak durumunda kaldırılmış değildir getGlobals yöntemi kullanarak Twig_Extension_GlobalsInterface uygulamak.

Eğer Twig_Environment böyle uzantısı eklemek oluşturmak

:

$twig = new Twig_Environment($loader); 
$twig->addExtension(new MyTwigExtension($passYour, $data)); 

Yani temelde size uzantısının yapıcı küresellerle yaratmak için gerekli tüm verileri geçmektedir.

+0

Yukarıda yüklediğim MyTwigExtension sınıfı, soruyu cevaplamak için gerekli parçaları içermektedir. Tabii ki gerekli tüm yöntemleri uygulamak zorunda. Tam olarak aldığınız hata mesajı nedir? –

+0

getName işlevinden geçmek zorunda kaldım veya bana bir hata verdi. Dizimi ona nasıl iletirim? örnek: $ global_array = [ \t 'var1' \t \t => 'çıkışı1', \t 'var2' \t \t => 'çıkışı2', \t // .... ... \t]; – Kohlzz

+0

Yapıcı parametrelerini kullanın. Cevabımda bunu açıkladım. –

-1

Twig_Enviroment'e $GLOBALS geçişi nasıl olur?

$ TwigLoader = new Twig_Loader_Filesystem ([...]);

$ dal = Yeni Twig_Environment ($ TwigLoader, dizisi ( 'küreseller' => $ GLOBALS ) ); Dal şablonunda sonra

:

{{globals.your_variable_name}}