Šablony – výpis nuly místo prázdné hodnoty

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

Ahoj, chci v šabloně vypisovat empty($hodnota) ? „0“ : $hodnota; (číslo, ve kterém se místo nuly může vyskytnout null nebo false). Jak na to v šabloně (elegantně)?

Díky za tip.

Editoval bzuK (23. 11. 2009 10:36)

Majkl578
Moderator | 1364
+
0
-

Asi si na to napsat makro…

Při včasném nastavení (třeba Presenter::startup()) to půjde takto:

LatteMacros::$defaultMacros['zeroOnEmpty'] = '<?php echo empty(%%) ? "0" : %%; ?>';

A v šabloně pak toto použití:

{zeroOnEmpty $foo}

Editoval Majkl578 (23. 11. 2009 11:11)

Ondřej Brejla
Člen | 746
+
0
-

Nebo Helper. Záleží na tom, co bude pro bzuKa zajímavější. Osobně radši preferuji helpery, ale to proto, že se mi víc líbí ;-)

Honza Kuchař
Člen | 1662
+
0
-

taky bych byl pro helper. Protoze pokud vim, tak helper je na formatovani vystupu. Makro spis jako fce. Napr. snippet.

Jod
Člen | 701
+
0
-

Niečo takéto nejde? {!=(int)$hodnota}

Ondřej Brejla
Člen | 746
+
0
-

Fuj, to je ale ošklivé ;-)

jasir
Člen | 746
+
0
-
<?php
	...
	//někde v BasePresenteru...
	$this->template->registerHelper('ifEmpty',array($this, 'ifEmptyHelper');
	...

	public function ifEmptyHelper($value, $default='') {
		if(empty($value)) {
			return $default;
		}
		return $value;
	}
?>

v šabloně pak: {$prom |ifEmpty:0}.

Edit: opraveno na ifEmpty

Editoval jasir (25. 11. 2009 2:09)

v6ak
Člen | 206
+
0
-

Fuj, používat isXXX na něco jiného než booleanovské informace je poněkud nekonvenční.

Honza Kuchař
Člen | 1662
+
0
-

Než isEmpty bych to spíš viděl na ifEmpty… Ale se na to tak dívám, umí helper něco jako tohle?

{$neco |ifEmpty:"<i>Prázdné</i>"}

Editoval honzakuchar (23. 11. 2009 22:39)

jasir
Člen | 746
+
0
-

honzakuchar napsal(a):

Než isEmpty bych to spíš viděl na ifEmpty… Ale se na to tak dívám, umí helper něco tohle?

{$neco |ifEmpty:"<i>Prázdné</i>"}

IfEmpty je logičtější, byl to jen nástřel řešení. A tohle by mělo fungovat.

bzuK
Člen | 3
+
0
-

Došli jste k pěknému řešení, všem díky moc :-)

Editoval bzuK (25. 11. 2009 1:52)