ako vytvorit vykreslitelny objekt s vlastnym vykreslovacim algoritmom

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

zdravim,
mozno primitivna otakza pre nette a PHP guru, ale ja sa z toho nejako neviem vysomarit.

potrebujem vytvorit taky objekt, ktory som schopny vyrenderovat v sablone ako {!$obj}… navyse potrebujem, aby som si vykreslovaci algoritmus napisal sam.

dam priklad.

mjme objekt reprezentujuci odkaz

$a = new MyLink();
$a-> url = 'https://nette.org';
$a-> title = 'nette';
$a-> icon = '/img/icons/nette.png';

no a v sablone by som rad tieto objekty vykresloval tak, ze vysledok bude vyzerat asi takto

<a href="'https://nette.org'" title="nette"><img alt="" src="/img/icons/nette.png" /></a>

verim, ze mi rozumiete a trosku s tym helfnete. rozmyslal som nad implementovanim rozhrania IComponent, ale chyba mi tu moznost definovat sposob renderovania…
dik vopred

xr
Člen | 94
+
0
-

dik.

ak spravne chapem, tak cela finta spociva v ... extends Nette\Application\Control a metode render().

presne to som potreboval, este raz dik.

norbe
Backer | 405
+
0
-

Případně na tuhle jednoduchou věc by bohatě stačil helper. Viz vlastní helpery a standartní helpery.

Použití pak nějak následovně: {!$a|imageLink} (pokud helper bude vracet objekty typu Html, je ! zbytečný).

Edit: Oprava linku

Editoval norbe (7. 10. 2010 11:17)

xr
Člen | 94
+
0
-

potrebujem pouzivat objekty, ale toto je vyborny napad na jednoduchsie vypisy. dik

norbe
Backer | 405
+
0
-

Však tam můžeš používat taky objekty, do helperu si můžeš poslat co chceš, nemusí to být nutně jen řetězec, jako v těch příkladech…

westrem
Člen | 398
+
0
-

a co tak magicka metoda __toString() v pripade, ze nechces alebo nemozes dedit