Jak předat v url dva parametry id
- lukendo
- Člen | 96
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.
- jiri.pudil
- Nette Blogger | 1029
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
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:
- Jednoho uživatele
- Jednu skupinu
- Všechny uživatele ze skupiny
- 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?
- Šaman
- Člen | 2659
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
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');