Úprava/zkrácení route bez default renderování

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

Zdravím,
potřeboval bych poradit ohledně routování, jestli to vůbec jde. Mám URL ve tvaru

/profil/
a
/profil/default/23

A potřeboval bych nějak nastavit aby se mi default nezobrazovalo, takže při zadání /profil/23 by se automaticky používal presenter profil a renderoval default s parametrem 23

Je to nějak možné? prolezl jsem router dokumentace a nenarazil jsme na to.

Děkuju moc :)

GEpic
Člen | 566
+
+1
-

Toto přidej nad původní routu:

	$route = new Route('<presenter>[/<id>]', 'Profil:default');

Editoval GEpic (27. 8. 2016 13:05)

Danny
Člen | 146
+
0
-

Děkuji ti moc :)

Danny
Člen | 146
+
0
-

Akorát mi to rozhodilo celej route systém, já bych to potřeboval aplikovat jenom na ten jeden presenter, takhle mi to bere úplně všechny. Vložil jsem to před hlavní routu

Editoval Danny (27. 8. 2016 14:12)

Danny
Člen | 146
+
+1
-

Tak jsem to vyřešil takto

$router[] = new Route('profil[/<id>]', 'Profil:default');
xPablos
Člen | 5
+
+1
-

Myslis takhle?

<?php
$route = new Route('profil[/<id>]', 'Profil:default');
?>
xPablos
Člen | 5
+
0
-

Byl jsi o chvili rychlejsi :-)

Danny
Člen | 146
+
0
-

Akorát si nejsme jistý jestli nebudu mít problém s předáváním parametru ID, podle ID se dotazuju do DB a teď jako by to parametr vůbec nenalezlo.

GEpic
Člen | 566
+
+2
-

Tak to změn na:

	$router[] = new Route('profil[/<userId>]', 'Profil:default');

A metodu:

	public function renderDefault($userId = null)
	{
		if ($userId !== null && $user = $this->userModel->get($userId)) {
			// TODO: Uživatel nalezen, co dál?
		} else {
			throw new BadRequestException('Uživatel nenalezen');
			...
			// Nebo tvoje výchozí zobrazení pokud parametr je null.
		}
	}

Pokud chceš předejít konfliktům.

Editoval GEpic (27. 8. 2016 14:54)

Danny
Člen | 146
+
0
-

Přesně to co jsem potřeboval, díky za tip :) rozšířil si mi obzory jak na to pohlížet :)