Routa ktora ma vstupe parameter pre default action, alebo zavola action ktora je v presentri definovana

- duskohu
 - Člen | 778
 
Caute, snazim sa napisat routu ktora bude smerovat na default presenter.
Presenter ma akciu default a tato ma parameter pageId na ktorom mam filtre ktore
prekladaju pageId na nazov stranky.
Takze mam www.myweb/mypage.
To mi funguje dobre, len neviem ako mam urobit ked si chcem do toho presentra
pridat napr. ActionTest a zadam www.myweb/test aby mi zavolalo akciu test. Cize pokial najde
v danom presentru akciu zavola tu, inak pozrie ci na zaklade filtra nenajde tu
stranku a presmeruje na default action s parametrom. Nevie niekto poradit?
		$pageRepository = $this->pageRepository;
		Route::addStyle('pageId');
		Route::setStyleProperty('pageId', Route::PATTERN, ".*");
		Route::setStyleProperty('pageId', Route::FILTER_IN, function ($url) use ($pageRepository) {
			$urlElenent = $pageRepository->findOneBy(array('urlSlug' => $url, 'status' => 1));
			if ($urlElenent != FALSE) {
				return $urlElenent->id;
			}
		});
		Route::setStyleProperty('pageId', Route::FILTER_OUT, function ($url) use ($pageRepository) {
			if (!is_numeric($url)) {
				return $url;
			}
			$urlSlug = $pageRepository->findOneBy(array('id' => $url, 'status' => 1));
			if ($urlSlug != FALSE) {
				return $urlSlug->urlSlug;
			}
			return $url;
		});
		$router[] = new Route('<pageId>', 'Default:Front:Default:default');
		// toto mam pre ostatne presentri a akcie
		$router[] = new Route('<presenter>/<action>[/<id>]', array(
			'module' => 'Default:Front',
			'presenter' => 'Default',
			'action' => 'default',
		));
					Editoval duskohu (10. 6. 2013 15:24)

- David Matějka
 - Moderator | 6445
 
neco podobnyho jsem psal tady https://forum.nette.org/…ple-com-nick tak se muzes inspirovat. pokud by se v tvem pripade jednalo o jediny presenter (a tedy jedinou tridu) stacilo by podedit Route a do metody match pridat jen neco jako
$request = parent::match($httpRequest);
if(!$request || !method_exists('FooPresenter', 'action' . $request['action'])) {
	return NULL;
}
return $request;
				
- duskohu
 - Člen | 778
 
Skusal som pridat routu specialne pre akciu test, ale prehliadat na mna zacne nadavat:This webpage has a redirect loop ked zadam www.myweb/test, a to uz nechapem preco
		$router[] = new Route('test', array(
			'module' => 'Default:Front',
			'presenter' => 'Default',
			'action' => 'test',
		));
		// toto mam pre ostatne presentri a akcie
		$router[] = new Route('<presenter>/<action>[/<id>]', array(
			'module' => 'Default:Front',
			'presenter' => 'Default',
			'action' => 'default',
		));