Nepovinné parametry

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Milan Petrů
Člen | 3
+
0
-

Ahoj, mám následující problém (spíš neznalost):
chci odkazovat na view, které má tři parametry, první persistentní a druhé dva nepovinné renderPhoto($lang, $photo=null,$topic=null){ jak budu odkazovat, pokud budu chtít předat například jen třetí parametr, díky Milan.

sodae
Nette Evangelist | 250
+
0
-

Nejsem si jistý ale:

{link photo, $lang, null, $topic}
stpnkcrk
Generous Backer | 190
+
0
-

Buď jak říká sodae, nebo lze přímo říct, kterému parametru dáváš hodnotu (samozřejmě lze předat více hodnot, v tomto případě ani nemusí být v pořadí, v jakém jsou v renderPhoto().

<?php
{link photo, 'topic'=>$topic}
?>
kravčo
Člen | 721
+
0
-

Milan Petrů napsal(a):

Chci odkazovat na view, které má tři parametry, první persistentní a druhé dva nepovinné renderPhoto($lang, $photo=null,$topic=null) …

Keď je parameter lang perzistentný, máš nejaký dôvod, prečo ho uvádzať vo výčte parametrov toho view? Normálne by malo fungovať i nasledujúce:

class PhotoPresenter extends BasePresenter
{
    /** @persistent string */
    public $lang;

    public function renderPhoto($photo = NULL, $topic = NULL)
    {
        // ...
    }
}

Pričom perzistentný parameter lang v odkaze objaví automaticky (na to sú prezistentné parametre určené).

V prípade zmeny jazyka potom treba perzistentný parameter pomenovať:

<a href="{plink photo 'lang' => 'en'}">English</a>
Milan Petrů
Člen | 3
+
0
-

Mně to při vynechání $lang vyhazuje: Notice: Undefined variable: lang in ... on line ...

kravčo
Člen | 721
+
0
-

Milan Petrů napsal(a):

Mně to při vynechání $lang vyhazuje: Notice: Undefined variable: lang in ... on line ...

Iste, v tele renderPhoto() potom treba používať premennú prezenteru – t.j. namiesto $lang písať $this->lang.

Milan Petrů
Člen | 3
+
0
-

Nojo, jasně, díky. :-)