Defaultni hodnoty v routach a v presenteru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Felix
Nette Core | 1183
+
0
-

Zdravim, porad tapu v principech defaultnich hodnod v routech a presenterech. Uvedu par prikladu:

<?php
$router[] = new Route('fotogalerie/fotka-<id>#<comment>', array(
    'presenter' => 'Fotogallery',
    'action' => 'fotka',
    'id' => NULL,
    'comment' => NULL
));
?>

Zajima me, jaky vliv na to ma kdyz uvedu:

  • ID null, COMMENT null
  • ID null, COMMENT 1
  • ID null, COMMENT vypustim
  • ID vypustim, COMMENT vypustim

Jak se toto ovlivnuje?
Dale pak jaky to ma vliv na akci presenteru.

<?php
public function actionFotka($id = null,$comment = null){}
public function renderFotka($id = null,$comment = null){}
?>

Zajima me zda-li se obou poslou stejne udaje. A pak jak to souvisi kdyz v obou metodach nezadam za vars null. Chapu to spravne, ze kdyz v route dam za ID null – tak neni povinne? Tudiz se do actionFotka:id nic neposle? A kdyz v route nastavim ‚id‘ ⇒ 1, tak defaultne kdyz se nevyplnise bude posilat cislo 1?
Poradte, dekuji.

PJK
Člen | 70
+
0
-

Ano, když dáš defaultní hodnotu NULL, je parametr nepovinný.

Cokoliv jiného bude defaultní hodnota, která se doplní, pokud argument bude chybět.

Pokud uvedeš parametr v routě a nezadáš ani defaultní hodnotu, ani NULL, tak se v případě, že tento parametr bude chybět routa a url nematchnou → 404 – BadRequestException.

Defaultní parametry funkcí s tím prakticky nemají co dělat

Editoval PJK (29. 8. 2010 20:58)