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 8. 11. 2008 Edituj Historie Poslední změny

Neplatné odkazy

Pokud vytváříte odkaz na Presenter nebo subrequest, může se stát, že zapsaný odkaz nebude platný – například proto, že Presenter daného jména neexistuje, nebo proto, že požadavek nelze převést na URL atd.

Jak naložit s neplatnými odkazy určuje statická proměnná Presenter::$invalidLinkMode. Ta může nabývat těchto hodnot (konstant):

  • Presenter::INVALID_LINK_SILENT – tichý režim, jako URL se vrátí znak #
  • Presenter::INVALID_LINK_WARNING – vizuální varování, viz dále
  • Presenter::INVALID_LINK_EXCEPTION – vyhodí se výjimka InvalidLinkEx­ception

Výchozí nastavení je INVALID_LINK_SILENT v produkčním režimu a INVALID_LINK_WAR­NING ve vývojovém. INVALID_LINK_WAR­NING pracuje tak, že jako URL vrátí chybovou zprávu, která začíná znaky error:. Aby takové odkazy byly na první pohled patrné, doplňte si do CSS:

a[href^="error:"] {
    background: red;
    color: white;
    text-decoration: blink;
}

Když pak odkaz zapsaný například v šabloně …

<a href="{$presenter->link('Product:list', 10)}">Produkt</a>

// nebo lze i stručněji:
<a href="{link Product:list 10}">Produkt</a>

…bude neplatný, bude vypadat takto (obarvení funguje v Opeře a Firefoxu).

Konkrétní příklad

Za neplatný odkaz se považuje i volání metody presenteru link() pokud je zavolána s parametrem, který není definovaný, odkaz se nevygeneruje správně a presenter se zachová tak, jak má tedy nastavena proměnná Presenter::$invalidLinkMode.

public function presentDefault($lang, $id)
{
    // špatné použití - parametr není definován v definici metody
    $this->link('Article:default', array($lang, $id, $undefined, 'undefined' => 'parametr'));

    // správné použití - pomocí metody getParam()
    $this->link('Article:default', array($lang, $id, 'undefined' => $this->getParam('undefined')));

    ...
}

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