Aliasy: novinka v navigaci po aplikacích

před 8 měsíci od David Grudl  

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

  1. meme when old guy saying „nice“

    před 8 měsíci
  2. Tohle je super, jen nebylo by prehlednejsi to mit primo v routru? Proste na jednom miste.

    před 8 měsíci · replied [3] David Grudl
  3. #2 trta911 jako že by router měl metodu setAliases([...]) nebo jak to myslíš?

    před 8 měsíci · replied [5] Šaman [6] trta911
  4. A parametry to umí?

    před 8 měsíci
  5. #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?

    před 8 měsíci
  6. #3 David Grudl spíš než setAliases([]) jsem myslel něco jako $router->addRoute(‚dashboard‘, ‚Admin:Dashboard:default‘)->setAlias(„admin“);

    před 8 měsíci · replied [7] David Grudl
  7. #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.

    před 8 měsíci
  8. Super!

    před 8 měsíci
  9. 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 .

    před 8 měsíci · replied [10] David Grudl
  10. #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.

    před 8 měsíci

Chcete-li odeslat komentář, přihlaste se