MVC a to druhé

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

Ahoj, mám dotaz k věci návrhu:

Píšu formulářovou aplikaci v Nette. V presenteru mám věci jako handleOpen, handleNew, handleDelete, v šabloně mám ukládání dat z formuláře. Vše samozřejmě přes funkce v modelu.

A teď ten dotaz:
Má být volání těch ukládacích funkcí opravdu v šabloně, nemělo by to být někde v Presenteru? Měl jsem vždy za to, že šablona by měla být hloupá a jen zobrazovat (používal jsem JSP a XSLT a tak).

Mám vytvořit něco jako handleSave() v presenteru ?

Díky a ahoj

Jod
Člen | 701
+
0
-

Neviem ako ty, ale ja mám také v presenteru :D

tr.
Člen | 79
+
0
-

:) co mas v presenteru?

Jod napsal(a):

Neviem ako ty, ale ja mám také v presenteru :D

Jod
Člen | 701
+
0
-

Skôr čo mám v šablone :D . Toto: {$form}

tr.
Člen | 79
+
0
-

Ok, dostal jsi me, nerozumim ti.

Zkus mi prosim odpovedet na ten dotaz nahore, nebo to nech nekmu jinemu prosim. Jsem zacatecnik a nerozumim ani jedne z tech veci co pises.

Diky T.

Jod napsal(a):

Skôr čo mám v šablone :D . Toto: {$form}

jasir
Člen | 746
+
0
-

Ano, vytvoř obsluhu formulářového tlačítka/tlačítek v presenteru. V šabloně žádný kód být nemusí.
Tam stačí jenom to {$form}. Zde v dokumentaci.

Jod
Člen | 701
+
0
-

A moja oblúbena veta: Mrkni do akrabat.forms v examples. =)))

_Martin_
Generous Backer | 679
+
0
-

jasir napsal(a):

Ano, vytvoř obsluhu formulářového tlačítka/tlačítek v presenteru. V šabloně žádný kód být nemusí.
Tam stačí jenom to {$form}. Zde v dokumentaci.

Vážení, prosím, ještě jednou a snad naposledy: vždy a pouze s vykřičníkem!

{!$form}

P.S. V nové revizi to možná bude nějak změněné, ale ještě jsem to netestoval a spousta lidí používá stabilní verzi, takže prostě: vykřičník!

Jod
Člen | 701
+
0
-

Mne to zázračne funguje aj bez neho na cca pol roka starom projekte :) . Ale minule sa tu s tým mordovali dobre :D

jasir
Člen | 746
+
0
-

Vážení, prosím, ještě jednou a snad naposledy: vždy a pouze s vykřičníkem!
P.S. V nové revizi to možná bude nějak změněné, ale ještě jsem to netestoval a spousta lidí používá stabilní verzi, takže prostě: vykřičník!

Ale no tak… ;-)

  • {$form} se přeloží jako TemplateHelpers::escapeHtml($form);
  • {!$form} se přeloží jako echo $form

Implementace escapeHtml:

<?php
   /**
    * Escapes string for use inside HTML template.
    * @param  mixed  UTF-8 encoding or 8-bit
    * @return string
    */
   public static function escapeHtml($s)
   {
      if (is_object($s) && ($s instanceof Template || $s instanceof /*Nette\Web\*/Html
		|| $s instanceof /*Nette\Forms\*/Form)) {
         return $s->__toString(TRUE);
      }
      return htmlSpecialChars($s, ENT_QUOTES);
   }
?>

Čili vykřičník je od revize 257 zbytečný, stable je od revize 300, čili to šlape i ve Stable verzi. Nicméně {!$form} je rychlejší.

Editoval jasir (15. 6. 2009 15:34)

Ondřej Brejla
Člen | 746
+
0
-

jasir napsal(a):
Ale no tak… ;-)

viz. Bílá stránka, trošku jinak? bez vykřičníku na starších php opravdu ee…

_Martin_
Generous Backer | 679
+
0
-

jasir napsal(a):

V dobrým: mrkni do zdrojáků stabilní verze ;)

Warden napsal(a):

viz. Bílá stránka, trošku jinak? bez vykřičníku na starších php opravdu ee…

Asi tak. Co verze PHP, to jiný bug. S vykřičníkem to bude fungovat všude, nezávisle na verzi PHP či verzi Nette. Howgh!

jasir
Člen | 746
+
0
-

_Martin_ napsal(a):

jasir napsal(a):

V dobrým: mrkni do zdrojáků stabilní verze ;)

Koukal jsem, je to tam jak píšu… Ale jinak – jasně, budu psát vykřičník ;-)
Edit: Aha, teď to vidím, ve stable je return (string) $s, ve vývojové return $s->__toString();

Warden napsal(a):

viz. Bílá stránka, trošku jinak? bez vykřičníku na starších php opravdu ee…

Ok, dobré vědět.

Editoval jasir (15. 6. 2009 18:02)

Tomik
Nette Evangelist | 485
+
0
-

Jod napsal(a):

A moja oblúbena veta: Mrkni do akrabat.forms v examples. =)))

Trochu OT: Už se to nejmenuje akrabat.forms, ale CD-collection… ;)

Jod
Člen | 701
+
0
-

Ale to sa mi tak nelúbi !!! :(

_Martin_
Generous Backer | 679
+
0
-

jasir napsal(a):

Edit: Aha, teď to vidím, ve stable je return (string) $s, ve vývojové return $s->__toString();

Právě – a protože kvůli tomu se už několikrát vylouply „bílo-stránkové“ problémy, doporučuji vykřičník jako best practise – s ním to spolehlivě funguje vždy (opravu David vydal teprve dnes v revizi 347). Tož asi tak.