Ako správne vložím {block #head} z Controleru?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Jamicon
Člen | 19
+
0
-

Chcem máť na svojej stránke EditorControl, ktorý má vo svojej šablone:

{block head}
  <script src="{$basePath}/HtmlBox/jquery.codify.min.js" type="text/javascript"></script>
  <script src="{$basePath}/HtmlBox/htmlbox.colors.js" type="text/javascript"></script>
  <script src="{$basePath}/HtmlBox/htmlbox.styles.js" type="text/javascript"></script>
  <script src="{$basePath}/HtmlBox/htmlbox.syntax.js" type="text/javascript"></script>
  <script src="{$basePath}/HtmlBox/htmlbox.undoredomanager.js" type="text/javascript"></script>
  <script src="{$basePath}/HtmlBox/htmlbox.min.js" type="text/javascript"></script>
  <link rel="stylesheet" media="screen,projection,tv" href="{$basePath}/css/{$css}" type="text/css">
{/block}

Scripty v inej časti aplikácie nepotrebujem, preto ich nechcem vkladať do @layout.latte.
EditForm volám z viacerých presenterov klasicky, továrničkou. Controler funguje, ale výrez zdroja stránky vyzerá takto:

  <script type="text/javascript" src="/lekari2/js/novinky.js"></script>
  <script type="text/javascript" src="/lekari2/js/identifikacia.js"></script>
</head>
<body>
  <div>
    <table style="width: 100%">
      <td valign="top">   <script src="/lekari2/HtmlBox/jquery.codify.min.js" type="text/javascript"></script>
<script src="/lekari2/HtmlBox/htmlbox.colors.js" type="text/javascript"></script>
<script src="/lekari2/HtmlBox/htmlbox.styles.js" type="text/javascript"></script>
<script src="/lekari2/HtmlBox/htmlbox.syntax.js" type="text/javascript"></script>
<script src="/lekari2/HtmlBox/htmlbox.undoredomanager.js" type="text/javascript"></script>
<script src="/lekari2/HtmlBox/htmlbox.min.js" type="text/javascript"></script>
	<link rel="stylesheet" media="screen,projection,tv" href="/lekari2/css/clanok.css" type="text/css" />

Chcem vedieť či sa dá aby som mal {block head} na správnom mieste na stránke.

Václav Mašín
Člen | 26
+
0
-

Nejsem si jist, že správně rozumím otázce, ale nestačí v takovém případě v hlavní šabloně na daném místě uvést prostě jen {block #head}{/block}?

22
Člen | 1478
+
0
-

Obávám se, že bloky nejsou v kontrolu podporované. Musíš na to jít jinak. Například renderHead() a pak v aplikaci {control editorControl:head}

Jamicon
Člen | 19
+
0
-

Václav Mašín napsal(a):

Nejsem si jist, že správně rozumím otázce, ale nestačí v takovém případě v hlavní šabloně na daném místě uvést prostě jen {block #head}{/block}?

Bohužiaľ nestačí, {block #head}{/block} v layout.latte mám. EditorControl vyrába továrnička, pokiaľ si to dobre pamätám, kǒd spúšťa až šablóna presenteru a vtedy je už blok <head> možno aj poslaný prehliadaču, takže do neho zasiahne už jedine javascript.
Vyriešil som to takto. Presenter má takúto šablónu:

{block head}
  {control editorForm:head}
{/block}

{block content}
  {control editorForm content}

Editor má 2 šablóny, v prvej časti je kód, patriaci do hlavičky, renderovaný metódou renderHead()

protected function renderHead() {
  $template = $this->template;
  $template->setFile(dirname(__FILE__) . '/templates/editorHeadForm.latte');
  $template->css = $this->model->getTyp() . ".css";
  $template->render();
}

Metóda render() zostala nezmenená. Konečne mi táto časť funguje tak ako potrebujem, ďakujem za spoluprácu.

Editoval Jamicon (1. 11. 2011 15:02)