Latte makrá {link} a {plink} nespracúvajú správne parametre

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

Myslím, že krátka ukážka to vysvetlí.

Nette 0.9.1

{assign $param => 'page'}
{link this, $param => 3} // /?page=3

Nette 1.0 alpha

{assign $param => 'page'}
{link this, $param => 3} // /?param=3
uestla
Backer | 799
+
0
-

V Nette 1.0 alpha zkus následující:

{var param => 'page'}
{link this, "$param" => 3}
Erik Ferčák
Člen | 10
+
0
-

uestla napsal(a):

V Nette 1.0 alpha zkus následující:

{var param => 'page'}
{link this, "$param" => 3}

Uvodzovky pomohli, ale je to neintuitivne.

David Grudl
Nette Core | 8228
+
0
-

Tahle chování tam je záměrně, protože zápis {link this, $param => 3} není moc obvyklý a spíš se zdá, že ho člověk použije pod dojmem, že dělá {link this, param => 3}.

Ale je fakt, že „tak chytrý“ by asi framework být neměl. Mám to odstranit? Nebudou s tím nějaké problémy?

redhead
Člen | 1313
+
0
-

Jsem pro odstranit

Vyki
Člen | 388
+
0
-

Taky mi to nepříjde moc logické.

Patrik Votoček
Člen | 2221
+
0
-

<OT> já asi půjdu dělat kávovar… když už je je i framework chytřejší než já…</OT>

$odstranit++;
wdolek
Člen | 331
+
0
-

nerad bych, aby se z Nette stalo neco jako RoR… jsem tez pro zruseni, i kdyz to bylo mysleno dobre. kdyz udela programator chybu, at je mu radsi nafackovano, nez aby framework odhadoval spravne chovani

h4kuna
Backer | 740
+
0
-

jsem též pro odstranění

jtousek
Člen | 951
+
0
-

Zajímavé, ale nevím jestli to chápu úplně.

Fungují oba tyto zápisy? Je v nich nějaký rozdíl nebo jsou totožné? Jsou-li totožné, proč ten druhý vůbec existuje?

<?php
{link this, param => 3}
{link this, "$param" => 3}
?>
Patrik Votoček
Člen | 2221
+
0
-

Je v nich rozdíl.

{link this, param => 3}
// se přeloží jako
$control->link("this", array('param' => 3);
//kdežto
{link this, "$param" => 3}
// se přeloží jako
$control->link("this", array("$param" => 3);
// pokud je tedy v šabloně nastavena proměnná `$param = "foo"` tak to ve skutečnosti je
$control->link("this", array('foo' => 3);

snad jsem se do toho moc nezamotal…

jtousek
Člen | 951
+
0
-

vrtak-cz napsal(a):

Je v nich rozdíl.

Aha, takhle je to úplně jasné. Díky. :)

David Grudl
Nette Core | 8228
+
0
-

V poslední revizi už by mělo fungovat {link $var => 123} dle očekávání.