Aliasy: novinka v navigaci po aplikacích
Máte ve své Nette aplikaci místo, na které často odkazuje? Nechcete přemýšlet, jaký je to presenter:action? S novinkou v Nette Application 3.2 přichází elegantní řešení, které vám práci zpříjemní. Jde o aliasy, které mění způsob, jakým přemýšlíte o navigaci.
Aliasy umožňují definovat snadno zapamatovatelné názvy pro různé
presentery a akce. Místo toho, abyste museli používat dlouhé a složité
identifikátory, můžete nyní použít jednoduchý a stručný alias.
Například místo Front:Home:default
můžete napsat jen
@home
. Nebo Admin:Dashboard:default
zkrátit na
@admin
. To vše díky nové sekci v konfiguračním souboru vaší
aplikace:
application:
aliases:
home: Front:Home:default
admin: Admin:Dashboard:default
sign: Front:Sign:in
Nemusíte přemýšlet, pod jakým presenterem je v projektu, který zrovna upravujete, administrace. Jednoduše si vytvoříte alias a pak v šabloně napíšete:
<a n:href="@admin">administrace</a>
Aliasy lze použít všude, kde pracujete s odkazy – ať už je to
v šablonách, při přesměrování pomocí redirect()
a
tak dále.
Komentáře
meme when old guy saying „nice“
Tohle je super, jen nebylo by prehlednejsi to mit primo v routru? Proste na jednom miste.
#2 trta911 jako že by router měl metodu
setAliases([...])
nebo jak to myslíš?A parametry to umí?
#3 David Grudl Něco podobného už používám, taky to definuji jako konstantu v routeru.
const DefaultRoute = 'Dashboard:default';
Potřebuji to v routeru pro definování běžné routy:
$router[] = new Route('<presenter>/<action>[/<id>]', self::DefaultRoute);
a pak v aplikaci pro přesměrování v případě, že uživatel není přihlášen/nemá práva.
Půjde to použít i v tom routeru?
#3 David Grudl spíš než setAliases([]) jsem myslel něco jako $router->addRoute(‚dashboard‘, ‚Admin:Dashboard:default‘)->setAlias(„admin“);
#6 trta911 to by ale bylo možné vytvářet aliasy jen pro presentery/akce, které mají specifické URL a své addRoute(). Současné řešení umožňuje vytvářet aliasy pro jakékoliv presentery nezávisle na routeru, který tak může být třeba SimpleRouter.
Super!
Me se strasne libi jak to ma symfony pomoci Atributu nad metodou, kazdou routu si muzete pojmenovat.
Myslim ze by nebylo spatny neco takovyho aplikovat do nete a odtranilo by se to mapovani.
pak uz by se psalo jen n:href=/stranka/view , $parameters
ja v nette nepouzivam vubec linky jako modul:presenter:action , je to strasne zmatecny.
Pisu klasicky {$basePath}/adresa. Za me by se cely to routrovany melo v nette prepsat .
#9 tomasde vidím to úplně naopak. V Nette je celé routování popsané na jednom místě, nikoliv roztroušené po celé aplikaci v podobě anotací. Taktéž lze routování pro celou aplikaci zcela změnit úpravou jediného místa. To je neskutečný benefit, který před příchodem Nette vůbec neexistoval. Neexistoval framework, který by tohle uměl. A zároveň zcela odstiňuje programátora od generování URL a nechává ho jednoduše volat metody:
Class::method(arg1, arg2, ...)
. Tj. presentery a akce.Chcete-li odeslat komentář, přihlaste se