sablony syntaxe makra link

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

Ahoj,
porad se peru s makrem link a nejspis mi unikaji jeho vsechny moznosti.
Konkretne mam nasledujici problem:

v sablone default mam u odkazu {link delete!, $workshop->id}, coz mi vygeneruje neco jako
http://localhost/…p/default/12?…

ale problem nastava pokud chci delete zavolat z sablony tohoto presenteru (dejme tomu „list“)
co mam zadat do makra link, aby vysledny kod byl zase :
http://localhost/…p/default/12?…

zkousel jsem

  • {link default:delete!, $workshop->id}
  • {link :Admin:Workshop:default:delete!, $workshop->id}
  • {link :Admin:Workshop:default, ‚do‘ ⇒ ‚delete‘}
  • {link :Admin:Workshop:default, ‚do‘ ⇒ ‚delete‘, ‚id‘ ⇒ $workshop->id}

posledni pokus mi vygeneruje ten pozadovany link, ale nevim jestli je to spravny postup, nebo je jednodussi cesta.
Muzete mi nekdo poradit? Nerad bych se ucil neco spatne, tezko se toho potom zbavuje :-)

Editoval baz (24. 11. 2010 23:30)

joseff
Člen | 233
+
0
-

Moc jsem nepochopil otazku, ale prijde mi ze se snazis zavolat z nejake sablony jiny presenter. Pokud to tak je tak pouzij plink pro ten tvar co puzivas za druhé až čtvrté mi přijde že musíš mít registrovaný NetteLinks každopádně ten tvůj poslední tvar teda vůbec nevypadá zdravě…

bazo
Člen | 620
+
0
-

odkaz na signal ineho presenteru sa neda normalne urobit. takze ti ostava ten stvrty sposob

Jur4
Člen | 51
+
0
-

Pokud jsem to spravne pochopil, tak se snazis zavolat signal handleDelete z ruznych view jednoho presenteru tak aby jsi mel na vsech mistech url vedouci na default.

Tady je dulezite vedet ze signal se nijak nevaze na konkretni view. To znamena ze v pripade generovani adresy na signal se vezme aktualni adresa a prida se ono ?do=delete.

Vubec ale nemusis resit nad jakou adresou se to vola. Signal se zpracuje spravne ale po zpracovani by jsi stejne pak mel nekam presmerovat (tam kam potrebujes). Asi takhle:

$this->redirect('default'); // kamkoliv chces asi default v tvem pripade
$this->redirect('this'); // aktualni stranka

Zabrani to taky tomu aby nekdo signal volal opakovane reloadem stranky.

Ale pokud to chces opravdu chces udelat tvym zpusobem, tak me nenapada jine reseni nez to, na ktere si uz prisel.

Mozna jsem to ale nepochopil, moje chapani uz tak trosku spi ;).

Filip Procházka
Moderator | 4668
+
0
-

a co takhle ten signál definovat v předkovi obou šablon? v BasePresenteru toho modulu

nebo to neměj jako signál, ale jako akci, u smazání je stejně žádoucí potvrzovací formulář s ANO NE, kvůli CSRF