Dahil Dwoo şablonunda ana değişkeni yeniden atamak

2 Cevap php

Ben bir Dwoo şablonu var - örnekte base.html ve bir dizi $data var.

{assign '' 'globalVar'} {* $globalVar empty right now *}


{foreach $data element}
    {include '_partial.html'}
{/foreach}

...

<b>{$globalVar}</b>

Ve burada _partial.html olduğunu

<p>
    {$element.someText}
</p>

{assign "$globalVar $element.someVar" 'globalVar'}

Ben kazanmak istiyorum ne? Her kısmi dosyasında ben {foreach} sonra kullanmak istediğiniz bazı $globalVar değiştirmek istiyorum.

Ve burada önemli bir şey - kısmi en {assign} yapmak istemiyorum base.html! Only in _partial.html.

O yüzden kısmi dosya bu değişkeni değiştirmek istiyorsunuz referans $globalvar _partial.html geçmek mümkün mü?

2 Cevap

Ben gerçek bir çözüm bulamadık - sadece bu geçici çözümü:

Dwoo $dwoo.get.variable veya $dwoo.post.variable vb superglobal değişkenler erişim sağlar.

_partial.html gibi bir şey yaptım bu yüzden biz, veri almak ya da ayarlayabilirsiniz:

{$dwoo.env.globalVar "$globalVar $element.someVar"}

In base.html Ben şimdi erişebilirsiniz:

{$dwoo.env.globalVar}

Ben iki yaklaşım alabilir söyleyebilirim, ancak şablonun kendisi bunu yapmak için gerçekten çok iyi bir şekilde hayır vardır.

Kolay, sadece $ aclling önce bir değişken oluşturmak için dwoo-> olsun, ve bir Dwoo_Data sadece yok nesne kullanıyorsanız, referans olarak atamak:

$globalVar = '';
$data->assignByRef('globalVar', $globalVar);

Bir Dwoo_Data nesnesi kullanarak değilseniz, bunun yerine bunu:

$globalVar = '';
$data['globalVar'] =& $globalVar;

Bu temelde bir referans olarak değişken başlatır, böylece daha sonra bu şablonları dahil bir referans olarak birlikte geçilecek.

Kolay ama o size kalmış çünkü o zaman kısmi şablonda Ben böyle atama öneriyoruz:

{$globalVar .= $element.someVar}

Diğer seçenek sadece veri () nesne yeni bir stdclass koymak olacaktır, o sizin gibi ona şeyler atayabilirsiniz

{$globalObj->stuff .= $element.someVar}

Bir nesne olduğundan ve otomatik referans olarak kabul edilecek, böylece de sorunu çözer.

Sadece bir yer birinden geri ana şablonuna veri geçemez çünkü Yani evet, bu yapılabilir, ama şablonda konum önce "plan" ettik.

I hope that helps, Cheers