Aliasy: novinka v navigaci po aplikacích

před měsícem 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 (RSS)

  1. meme when old guy saying „nice“

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

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

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

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

    před měsícem · 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 22 dny
  8. Super!

    před 15 dny
  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 13 dny · 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 13 dny

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