MVC a to druhé
- tr.
- Člen | 79
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
- jasir
- Člen | 746
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.
- _Martin_
- Generous Backer | 679
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!
- jasir
- Člen | 746
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
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
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
_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)
- _Martin_
- Generous Backer | 679
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.