Jak vložit parametr do URL

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

Zdravím, asi to bude hoooodně začátečnickej dotaz, ale opravdu jsem to nikde nenašel. Jak přidám parametr do URL a jak ho následně načtu?

<li><a n:href="User:page">Upravit</a></li>
<li><a n:href="User:page">Profil</a></li>

do daných odkazů potřebuju dát parametr, dle kterého poznám, z jakého odkazu se na danou stránku jde (na jednu šablonu).

Pavel Kravčík
Člen | 1196
+
+1
-

https://doc.nette.org/…n/presenters#…

Použiješ čárku a pak v action můžeš použít jméno té proměnné jako parametr nebo si zavolat getParam().

n:href="User:page, jagr => 68"

public function actionDefault($jagr)
{
	//nebo
	$this->getParameter('jagr');
}
Lukeluha
Člen | 130
+
0
-

@kzk_cz: Myslím že to, cos napsal, mohlo začátečníka pěkně zmást :)

@Croc: ze všeho první by sis měl přečíst quickstart. Je to tutoriál krok za krokem, jak si napsat první aplikaci. Co se týče tvého dotazu, tak v tvém případě, pokud chceš volat presenter User a v ní action page, by kód vypadal takto.

V šabloně:

<a n:href="User:page pageId => 5">...</a>

A poté v presenteru:

class UserPresenter extends BasePresenter
{
	public function actionPage($pageId)
	{
		echo $pageId; // v tomto pripade vypise 5
	}
}

Existuje i druhý způsob, jak si načíst parametry v presenteru, zmiňoval jej @kzk_cz, ale pro tebe, jako pro začátečníka, je zbytečné tuto metodu používat. Bohatě si vystačíš s uváděním parametrů přímo v metodě. Tento způsob je navíc mnohem více používaný a intuitivnější.

Edit: díky za info o chybě @MichalVyšinský

Editoval Lukeluha (16. 6. 2015 16:17)

Michal Vyšinský
Člen | 608
+
+3
-

@Lukeluha ten $ v odkazu tam být nemá – šablona by spadla na nedefinované proměnné

Pavel Kravčík
Člen | 1196
+
0
-

@Lukeluha: Croc už se tu ptal na složitější věci, takže myslím, že nasměrování mu pomůže víc, než kompletní řešení. :)

Croc
Člen | 270
+
0
-

Díky za nápovědu. Dotaz jsem neřekl úplně přesně, ale potřeboval jsem dostat parametr až do šablony, což se nakonec povedlo. Díky :)

public function renderXXXX($page)
    {
        $this->template->page = $page;
       //.......
    }