použití addImage společně s komponentou

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

Ahoj, řeším vykreslování komponenty, která má sloužit jako menu pro editaci/přidávání, mazání atd.

komponenta vypadá takto:

public function createComponentArticleIconMenu() {
       $form = new Form();
	$form->addImage('published',$this->template->basePath.'/images/icons/published.png');
	$form->addImage('unpublihed',$this->template->basePath.'/images/icons/unpublished.png');
	$form->addImage('edit',$this->template->basePath.'/images/icons/edit.png');
	$form->addImage('delete',$this->template->basePath.'/images/icons/delete.png','delete');
	$form->addImage('copy',$this->template->basePath.'/images/icons/copy.png');
	$form->addImage('move',$this->template->basePath.'/images/icons/move.png');
	return $form;
    }

Menu chci obrázkové (trošku jsem se inspiroval Joomlou) a nenapadlo mě, jak to udělat jinak, než přes addImage. Problémem je, že chci aby to menu byla komponenta, jelikož ji budu ručně vykreslovat ve více šablonách podle toho, které ikony budu chtít zobrazit.

Nebo někoho z vás napadá lepší způsob jak udělat obrázkové menu pro více šablon, ale bez duplicitního kódu? Šlo by to asi klasicky přes css, ale tohle řešení se mi líbí víc.

A abych teda dodal co mi nejde. Potřebuji na každou ikonu navázat akci při kliknutí a přesměrování na šablonu – třeba Articles:add, Articles:edit atd. Nějak se mi nedaří to tam nacpat.

Díky za nápady.

Editoval Freestyler (10. 8. 2014 22:40)

petr.pavel
Člen | 535
+
+5
-

Ptáš se, jak definovat formulář jednou a použít ho ve víc presenterech?
Jako komponentu?

Jinak jestli potřebuješ jen aby ikona na kliknutí vedla na nějakou akci presenteru, tak k tomu vůbec nepotřebuješ formulář, ne?

<a n:href="uprav $id"><img src=""></a>

Editoval petr.pavel (10. 8. 2014 23:52)

Northys
Člen | 29
+
+1
-

petr.pavel napsal(a):

Ptáš se, jak definovat formulář jednou a použít ho ve víc presenterech?
Jako komponentu?

Jinak jestli potřebuješ jen aby ikona na kliknutí vedla na nějakou akci presenteru, tak k tomu vůbec nepotřebuješ formulář, ne?

<a n:href="uprav $id"><img src=""></a>

Já jsem mu říkal ať z toho udělá odkaz… #jeToTroll #vetsiNezJa

EDIT: aby se neřeklo že jde o čistej hate… absolutně nechápu co meleš o „klasicky přes CSS“ když jsem ti jasně řekl, že si máš udělat menu.latte do kterého narveš na začátek buttonky (odkazy), které budou všude "a přes ifCurrent macro ":https://latte.nette.org/en/tags#… si tam přidát zbytek pro edit add atp… ale ne, ty jsi prostě musíš jít zatrollit :-D

Editoval Northys (11. 8. 2014 6:59)

Freestyler
Člen | 50
+
0
-

Umím vytvářet a používat komponenty. Prostě chci obrázkové menu, které bude komponentou, ručně si ho vyrenderuji v šabloně, zobrazím co tam chci zobrazit a odkážu se na jednotlivé akce v jiném presenteru. Tímto ani Northysovým způsobem to řešit nechci, menu by měla být komponenta a tohle do šablony nepatří …

Komponentu hotovou mám (viz. předchozí kód). Problémem je její vyrenderování, aby vedla na akci presenteru.

Tento pokus mi nefunguje, nepřesměruje se to vůbec nikam ať tam napíšu cokoliv :(.

{label edit /}
 <a n:href='Articles:edit'><input n:name="edit"></a>

petr.pavel napsal(a):

Ptáš se, jak definovat formulář jednou a použít ho ve víc presenterech?
Jako komponentu?

Jinak jestli potřebuješ jen aby ikona na kliknutí vedla na nějakou akci presenteru, tak k tomu vůbec nepotřebuješ formulář, ne?

<a n:href="uprav $id"><img src=""></a>
David Matějka
Moderator | 6445
+
0
-

Nepouzivej zadnej formular. Udelej si komponentu, jak radi @petr.pavel
Jen misto n:href, respektive makra {link} musis pouzit makro {plink}

takze:

<a href="{plink Articles:edit $id}"><img src="{$basePath}/images/icons/published.png"></a>
Freestyler
Člen | 50
+
0
-

@petr.pavel pokud teda správně čtu tam nic o komponentě nepíše :D. Byl bych vděčen, kdyby to šlo popsat trochu konkrétněji. Každý má asi úplně jinou představu.

Díky.

matej21 napsal(a):

Nepouzivej zadnej formular. Udelej si komponentu, jak radi @petr.pavel
Jen misto n:href, respektive makra {link} musis pouzit makro {plink}

takze:

<a href="{plink Articles:edit $id}"><img src="{$basePath}/images/icons/published.png"></a>
David Matějka
Moderator | 6445
+
0
-

@Freestyler viz doc

Freestyler
Člen | 50
+
0
-

Ok, asi to bude lepší přes latte. Troška nakopnutí?

Northys napsal(a):

petr.pavel napsal(a):

Ptáš se, jak definovat formulář jednou a použít ho ve víc presenterech?
Jako komponentu?

Jinak jestli potřebuješ jen aby ikona na kliknutí vedla na nějakou akci presenteru, tak k tomu vůbec nepotřebuješ formulář, ne?

<a n:href="uprav $id"><img src=""></a>

Já jsem mu říkal ať z toho udělá odkaz… #jeToTroll #vetsiNezJa

EDIT: aby se neřeklo že jde o čistej hate… absolutně nechápu co meleš o „klasicky přes CSS“ když jsem ti jasně řekl, že si máš udělat menu.latte do kterého narveš na začátek buttonky (odkazy), které budou všude "a přes ifCurrent macro ":https://latte.nette.org/en/tags#… si tam přidát zbytek pro edit add atp… ale ne, ty jsi prostě musíš jít zatrollit :-D

David Matějka
Moderator | 6445
+
0
-

@Freestyler no opravdu bych te nejradsi trosku nakopnul :) cetl sis ten odkaz? Hned prvni sub-kapitola rika, jak pouzit sablony v komponente.

Northys
Člen | 29
+
0
-
<!-- pár odkazů, které budou úplně všude -->
<a n:href="Presenter:action" class="btn-action">action</a>
<a n:href="Presenter:action" class="btn-action">action</a>
<a n:href="Presenter:action" class="btn-action">action</a>
{ifCurrent Presenter:nejakaJinaAction}
<!-- pár odkazů, které se zobrazí jen pokud jsme v nejakaJinaAction -->
	<a n:href="Presenter:action" class="btn-action">action</a>
	<a n:href="Presenter:action" class="btn-action">action</a>
{/ifCurrent}
{ifCurrent Presenter:dalsiAction}
<!-- pár odkazů, které se zobrazí jen pokud jsme v dalsiAction-->
	<a n:href="Presenter:action" class="btn-action">action</a>
	<a n:href="Presenter:action" class="btn-action">action</a>
{/ifCurrent}
<!-- atd atd atd-->

Editoval Northys (12. 8. 2014 19:53)