Drobnosti so sablonou a curlyBrackets

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

1. S takouto konstrukciou ma curlyBrackets problem, ide to nejako inac ?

{link orderby!, {$appname} }

2. Pokial chcem ladit pri error reportingu E_ALL, je nutne osetrit v sablonach situacie ako

{if isset($value)}

nemozem to skratit na

{if $value}

Rovnako

{if isset($item2['onclick'])}onClick="{$item2['onclick']}"{/if}

sa neda skratit na

{if $item2[onclick]}onClick="{$item2[onclick]}"{/if}

Ja len ci nie su nato nejake „tovarnicky“, ktore by ulahcili zivot lenivym programatorom, takym ako ja :)

_Martin_
Generous Backer | 679
+
0
-

Ahoj, k první otázce: místo

{link orderby!, {$appname} }

napiš

{link orderby!, $appname} // čárku můžeš smazat
David Grudl
Nette Core | 8218
+
0
-

Ad zkracování isset:

To je jedna z věcí, které řešit nechci, protože to ze zkušenosti vede k těm nejnepříjemnějším chybám.

Doporučuji v presenteru definovat i prázdné proměnné:

$this->template->missing = NULL;

Případně se dá vypnout hlášení na šablone:

$this->template->warnOnUndefined = FALSE;

a pak používat bezpečně

{if $template->value} ... {/if}
edke
Člen | 198
+
0
-

_Martin_ wrote:

Ahoj, k první otázce: místo

{link orderby!, {$appname} }

napiš

{link orderby!, $appname} // čárku můžeš smazat

Super, vdaka za tip. Prave som nato prisiel tiez :) A pravda, aj bez ciarky to funguje.

edit: Ale dalsie argumenty uz musia byt oddelene ciarku zrejme.

Editoval edke (10. 10. 2008 10:35)

edke
Člen | 198
+
0
-

David Grudl wrote:

Ad zkracování isset:

To je jedna z věcí, které řešit nechci, protože to ze zkušenosti vede k těm nejnepříjemnějším chybám.

Doporučuji v presenteru definovat i prázdné proměnné:

$this->template->missing = NULL;

Případně se dá vypnout hlášení na šablone:

$this->template->warnOnUndefined = FALSE;

a pak používat bezpečně

{if $template->value} ... {/if}

Pri tomto ma napada este jeden problem, ktory som teraz riesil. Uz v inom vlakne mi poradili, ako to je s dibi results, ci to bude objekt alebo pole:

database.resultObjects = TRUE

Objekt je super, pretoze sa minimalne lepsie s nim pracuje v sablone. Ale ako potom na zlozitejsie polia, ktore by tiez bolo fajn mat zapisane cez objekt, lebo miesat potom v sablone polia a objekty – najlepsia cesta ako sa zamotat.

Napriklad ako s takymto polom:

$this->tableColumns= array(
	array( 'field' => 'login', 'name' => 'Login', 'align' => 'left' ),
	array( 'field' => 'cele_meno', 'name' => 'Meno a priezvisko', 'align' => 'left' ),
	array( 'field' => 'session', 'name' => 'Session', 'align' => 'left' ),
	array( 'field' => 'aktivne', 'name' => 'Aktívne', 'align' => 'left' ),
		);
_Martin_
Generous Backer | 679
+
0
-

Jj, argumenty musí být oddělené čárkou

{link cil-odkazu $argument}
{link cil-odkazu $argument1, $argument2, [...]}
Jan Tvrdík
Nette guru | 2595
+
0
-

Objekt je super, pretoze sa minimalne lepsie s nim pracuje v sablone. Ale ako potom na zlozitejsie polia, ktore by tiez bolo fajn mat zapisane cez objekt, lebo miesat potom v sablone polia a objekty – najlepsia cesta ako sa zamotat.

Napriklad ako s takymto polom:

$this->tableColumns= array(
	array( 'field' => 'login', 'name' => 'Login', 'align' => 'left' ),
	array( 'field' => 'cele_meno', 'name' => 'Meno a priezvisko', 'align' => 'left' ),
	array( 'field' => 'session', 'name' => 'Session', 'align' => 'left' ),
	array( 'field' => 'aktivne', 'name' => 'Aktívne', 'align' => 'left' ),
		);

Přetypuj všechny array na stdClass nebo můžeš zkusit upravit chování filtru curlyBrackets.

edke
Člen | 198
+
0
-

Jan Tvrdík wrote:
Přetypuj všechny array na stdClass nebo můžeš zkusit upravit chování filtru curlyBrackets.

jj, uz som nasiel daco v php manuale:

<?php
$obj = (object) 'ciao';
echo $obj->scalar;  // outputs 'ciao'
?>

Uz sa s tym hram a uvidim ako to pretypovanie sa bude chovat na zlozitejsom poli.