Manual render a krajsi zapis sablony

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

Ahoj, chcem sa spytat ci neexistuje nejaky nice zapis takehoto kodu sablony?

<?php

<div class="login_div" n:if="!$user">
{control loginForm begin}
	{$control['loginForm']['login']->control}
	{$control['loginForm']['send']->control}
{control loginForm end}
</div>

?>

ide mi tieto zapisy

<?php
{$control['loginForm']['login']->control}
{$control['loginForm']['send']->control}
?>
Honza Marek
Člen | 1664
+
0
-

Neexistuje. Jedině si můžeš do šablony přiřadit formulář v proměnné.

$this->template->loginForm = $this["loginForm"];
<div class="login_div" n:if="!$user">
{control $loginForm begin}
        {$loginForm['login']->control}
        {$loginForm['send']->control}
{control $loginForm end}
</div>

Ale to asi není to, co jsi chtěl.

newPOPE
Člen | 648
+
0
-

No mas pravdu na to som nemyslel.

zaujimave je ze

<?php
{control loginForm begin}
?>

berie ale to ostatne nie. Skusal som rozne zapisy po tom co som na skoleni videl tie kratke zapisy v sablonach :-) tak som predpokladal nieco taketo

<?php
{control loginForm->login->control}
?>

popripade nieco podobne

Honza Marek
Člen | 1664
+
0
-

Prostě to (zatím) nijak nejde.

pekelnik
Člen | 462
+
0
-
{control form:name} by se nejvíc líbilo mě :)

taky se mi nelíbí to begin a end…

mohlo by to být třeba

{form name}
...
{/form}

Editoval pekelnik (28. 3. 2010 22:10)

Honza Marek
Člen | 1664
+
0
-

Pěkný by bylo

{form jmenoFormu}
<p>{formLabel input} {formControl input}</p>
{/form}

Což musí bejt (vzhledem k faktu, že formuláře nejdou zanořovat) naprosto triviální na implementaci. Bohužel neumim vyrábět vlastní makra pro Latte filtr, v dokumentaci toho moc neni a v kódu bych se musel dlouho rozhlížet.

Mikulas Dite
Člen | 756
+
0
-

Super nápad!
Vlastní makro je snadný – v prepare metodě filtrů (ale teď z hlavy nevim jak se jmenuje :) stačí něco na způsob

$template->registerFilter($lf = new LatteFilter);
$lf->handler->macros['foo'] = '<?php echo bar(%:macroModifiers%); ?>';

Jestli si na to zítra chvilku najdu, tak to napíšu…

Editoval Mikulas Dite (28. 3. 2010 23:16)

pekelnik
Člen | 462
+
0
-

Zajímavé jak člověku docvakávají věci postupně :)

co takhle?

{form login}

	{label name}: {control name} <br />
	{label password}: {control password}

{/form}
Honza Marek
Člen | 1664
+
0
-

pekelnik: control ne, to už je zabraný…

Jinak přátelé… Naprogramoval jsem to.

https://gist.github.com/347052

Honza Marek
Člen | 1664
+
0
-

Dalo by se s tim teda ještě trochu pohrát. Nefunguje syntax {form nazev}, musí se to dát včetně řetězce jako {form 'nazev'}. Taky by bylo cool zprovoznit tagy <n:form ...>, <n:formControl ...> apod., který mi taky nefungujou. Tak kdyby se někomu chtělo, tak to forkněte a dodělejte.

Mikulas Dite
Člen | 756
+
0
-

pekelnik napsal(a):
co takhle?

Mě se to líbí, mažu nette control (zůstává widget), tohle je mnohem kratší.

Honza: Thumbs up!

redhead
Člen | 1313
+
0
-

Honza Marek napsal(a):

Taky by bylo cool zprovoznit tagy <n:form ...>, <n:formControl ...> apod., který mi taky nefungujou.

O něco takovýho jsem se pokoušel už kdysi dávno. Bylo to dělaný přes vlastní filter (a trochu složitě názvem xforms:…) ale nějak to zašlo. A nebylo to moc cool. Viz:

https://forum.nette.org/…rovani-formu

Ale implementovat do toho i atributy typu class atd.. aby to nedělal programátor v presenteru, by bylo hodně dobrý..

zbytovsky
Člen | 18
+
0
-

Jen pro lidi, kteří tohle hledají – pokračování těch maker je zde: https://forum.nette.org/…ni-formularu

V nette2 se formuláře nějak mění, ale dokumentace moc ne. Nějaké postřehy jsem jsem napsal nakonec stránky: https://dev.nette.org/…vykreslovani

Juginek
Člen | 1
+
0
-

Nemáte někdo tušení, kam se poděly examply? Například v api.nette u Class Form byla řada tutoriálů (Example: forms/basic-example.php Form definition using fluent interfaces…). Ale po přechodu na nette.org linky zmizely a nikde nic není k nalezení.

Už mě to docela prudí tahle černá můra nette. Nežiju, abych programoval, ale naopak! Tutíž je to docela vopruz a ztráta času dolovat tak elementární věci na dementních fórech protože neexistuje pořádná dokumentace! sorry…

Jug

Filip Procházka
Moderator | 4668
+
0
-

https://github.com/nette/examples všechny by měly být zde :)

David Grudl
Nette Core | 8170
+
0
-

Jsou v adresáři examples.