Jak předat v url dva parametry id

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

Zdravím dostal jsem to těžších akcích presenteru a nejsem si zcela jist jak správně postupovat.
Mám následující stránku s url:
groups/detail/447
a na téhle stránce mám odkazy pro smazání uživatelů (kteří jsou ve skupině s id 447 a měli by se mazat přes následující akci:
users/remove/544

Jelikož vazba users – groups je M:M tudíž potřebuji zachytávat oboje id, což nevím jak jednomu z těch presenterů předat, jestli vytvořit novou routu?? nebo nějak v sessions či cookies v akci remove/544 zachytit id z předešlé url. Děkuji za rady.

Oli
Člen | 1215
+
0
-

Předej si ID skupiny, ze které chceš smazat uživatele smazat (447) a pak to jen smaz

$this->context->table('users')->where(':user_group.group_id', 447)->delete()
lukendo
Člen | 96
+
0
-

Ale ja nevim jake to id bude, ty cisla jsek udaval jako priklad

jiri.pudil
Nette Blogger | 1029
+
+2
-

Jeden z těch parametrů zkrátka a jednoduše pojmenuj jinak než id, třeba groupId :) pokud potřebuješ mít hezký URL, budeš muset sáhnout do routeru, jinak se parametr předá v query stringu

Oli
Člen | 1215
+
-1
-

Co se týče routování tak přesně jak píše @jiri.pudil. Ale mě není jasný naco potřebuješ ty 2 idčka. Muzes chtit smazat:

  1. Jednoho uživatele
  2. Jednu skupinu
  3. Všechny uživatele ze skupiny
  4. všechny skupiny, kam patří jeden uživatel

A to všechno uděláš i s jedním IDčkem. Nebo potřebuješ smazat něco jiného?

Barvoj
Člen | 60
+
+4
-

Ještě může chtít odstranit jednoho uživatele z nějaké konkrétní skupiny.. A k tomu potřebuje id uživatele i id skupiny.

Šaman
Člen | 2659
+
0
-

Tohle je docela běžná záležitost – jak psal @jiri.pudil pojmenuj ten jeden parametr jinak. Při práci v presenteru s tím pracuj úplně normálně, jen holt to jinak pojmenované id bude trochu ošklivé v adrese. Ale u handlerů je to skoro jedno – stejně pak přesměruješ zase na nějaký stabilní pohled, nejspíš detail osoby, nebo skupiny.

lukendo
Člen | 96
+
0
-

Díky všem, už jsem to pořešil. Pokud se to dá vyřešit lépe, budu rád za případné komentáře. :)

odkaz v latte:

<a href="{$basePath}/users/remove/{$group->id}/{$row->id}">Smazat uživatele ze skupiny {$group->name}</a>

UsersPresenter :

public function actionRemove($id, $userid)
	{
		... kontrola na id
		$row = $this->usersGroupsModel->getTable()->where('users_id', $userid)->where('groups_id', $id);
		$row->delete();
	}

RouterFactory:

$adminRouter[] = new Route('admin/<presenter>/<action>/[<id>]/[<userid>]', 'Homepage:default');
CZechBoY
Člen | 3608
+
+7
-

Ajaj.. Pouzij n:href atribut nebo makro plink. Jinak nebude adresu generovat Nette.