Vložení Javascriptu do layoutu
- warp
- Člen | 26
Zkoušel jsem už hledat zde na fóru, ale jediné co se blížilo mým požadavkům, bylo v tomto vlákně konkrétně v druhém příspěvku, ale když jsem kód vložil do svého projektu, tak to vypsalo chybu
**InvalidArgumentException**
Invalid argument passed to foreach resp. SmartCachingIterator; array or Iterator expected, NULL given.
A když ten script vložím přímo do @layout.phtml, tak to neprojde. Určitě to není nic náročného a určitě to tu někde už je, jen jsem neměl to stěstí abych to našel :)
- warp
- Člen | 26
Pokusil sem se kod zjednosudit (snad spravne) a zda se, ze se pole neplni.
Kod v @layout
{* Load JS Scripts *}
{if !empty($jsScripts)}
{foreach $jsScripts as $jsScript}
<script type="text/javascript">
{$jsScript->data}
</script>
{/foreach}
{/if}
Kod v BasePresenteru
protected function addJsScript($data)
{
$this->template->jsScripts[] = (object) array('data' => $data);
}
Kod ve vlastnim presenteru
class BuilderPresenter extends BasePresenter
{
public function actionDefault()
{
$data = 'document.getElementById("dataGrid1").onclick = function ...;';
$this->addJsScript($data);
}
}
- warp
- Člen | 26
Tak jsem zjistil, ze problem neni v poli, ale primo v javascriptu. Zrejme jsem zacal tim nespravnym.
Takze uz mam konkretnejsi problem, tenhle kod:
$().ready(function() {
$('.jimgMenu ul').kwicks({max: 254, duration: 300, easing: 'easeOutQuad', complete: 'callback'});
});
neprojde z duvodu:
Filter LatteFilter::__invoke: Unknown macro {max: 254, duration: 300, easing: 'easeOutQuad', complete: 'callback'}
Nejde zaridit, aby Nette tento kus kodu ignoroval nebo nejak preskocil a nesnazil se ho prelozit podle sveho?
- HanziQ
- Člen | 16
Je tu několik možností:
- Za každou { která nemá označovat makro dát mezeru. → { max: .....
- Místo { použít {l} a místo } použít {r}
- použít {syntax double}{/syntax} → mezi těmito značkami bude potřeba pro použití makra jeho uzavření do {{ a }}, ne jen { a } (lze použít i jako <script type=„text/javascript“ n:syntax=„double“>, pak to bude platit pro celý javascript)
Osobně bych doporučoval 1).