Nette Framework
  • Úvodní stránka
  • Download
  • Dokumentace
  • Fórum
  • Blog
  • Přispějte
  • Quick Start
    • Začínáme
    • Adresářová struktura
    • Vytvoření presenteru
    • Připojení šablony
    • Tvorba odkazů
    • Hezčí šablony
    • Zobrazení tabulky
    • Stránkování a řazení
    • Tvoříme komponentu
  • Nette
    • Základní třídy
    • Nette\Annotations
    • Nette\Component
    • Nette\Debug
      • Základy
      • Logování chyb
      • Firebug
    • Nette\Environment
    • Nette\Image
    • Nette\Object
    • Nette\String
  • Nette\Application
    • Application
    • AppForm
    • Control
    • Presenter
    • PresenterCompo­nent
    • PresenterRequest
    • Routování
    • MultiRouter
    • Route
    • SimpleRouter
  • Nette\Caching
  • Nette\Forms
  • Nette\IO\SafeS­tream
  • Nette\Loaders
  • Nette\Security
    • Bezpečnost aplikací
    • Identity
    • SimpleAuthenti­cator
    • Permission
    • Dynamická správa rolí a zdrojů
  • Nette\Templates
    • Template
    • Template Filters
    • Template Helpers
  • Nette\Web
    • Web
    • Ftp
    • Html
    • HttpRequest
    • HttpResponse
    • Session
    • User
Naposledy změněno 1. 9. 2008 Edituj Historie Poslední změny

Generování odkazů

Parametry metody link() nesouvisí přímo s URL. Prvním argumentem je cíl (destination) určující cílový presenter & view, druhým (resp. dalšími) jsou parametry předávané tomuto presenteru:

$link->(destination [,arg [,arg ...]])

kde destination je
'anotherView' (odkaz na aktuální presenter a anotherView)
'AnotherPresenter:anotherView' (odkaz na AnotherPresenter a anotherView)
'AnotherPresenter:' (ozkaz na AnotherPresenter a výchozí view ‚default‘)
'AnotherModule:Presenter:view' (odkaz do jiného modulu)
Parametry presenteru je možné předat jako asociativní pole
$this->link('show', array('id' => 10, 'lang' => 'en'))

Asociativní pole není příliš sexy, proto Nette nabízí vychytávku: pokud existuje v cílovém presenteru metoda renderShow($id, $lang, ...) nebo metoda presentShow($id, $lang, ...), kde ono ‚show‘ v názvu odpovídá názvu linkovaného view, je možné klíče ‚id‘ a ‚lang‘ vynechat – automaticky se vezmou z parametrů těchto metod:

$this->link('show', array(10, 'en'))

A naopak, když je dotyčná metoda po odkliknutí zavolána, tak se jí předají tyto argumenty v parametrech $id a $lang. V poli je možné uvést další parametry, které metody renderShow a presentShow nedefinují, například lze nastavit nějaký persistentní parametr (v tom případě ovšem už s asociativním klíčem). Pokud žádný takový další parametr není, je možné pole úplně vynechat:

$this->link('show', 10, 'en')

Tedy v Nette se odkazuje na presenter & view, nebo ještě jednodušeji: odkazuje se na konkrétní metodu. $this->link('catalog:show', 10, 'en') odkazuje a po odkliknutí zavolá metodu CatalogPresenter::renderShow(10, 'en'). Jaké se vytvoří URL v tu chvíli nehraje roli. To je úkol oddělené vrstvy – routování.

Copyright © 2008, 2009 Nette Foundation

Nette Framework powered | dibi powered | Texy! powered | Institut Školení PHP