$presenter->isLinkCurrent(), filtry v routru a entita

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

Mám routu, kde ve filtrech překládám slug na entitu a obráceně. Problémem je, že mi $presenter->isLinkCurrent() „ignoruje“ entitu, kterou posílám jako parametr.

Routování jinak funguje správně, entity se překládají na slug a obráceně…

Příslušná routa

$router[] = new Route('<lang cs|en>/<slug .*>', [
	'module' => 'Front',
	'presenter' => 'Page',
	'action' => 'default',
	'slug' => '/',
	NULL => [
		Route::FILTER_IN => function ($params) use ($slugService) {
			$params['page'] = $slugService->findBySlug($params['lang'], $params['slug']);

			if (!$params['page']) {
				throw new BadRequestException();
			}

			unset($params['slug']);

			return $params;
		},
		Route::FILTER_OUT => function ($params) use ($slugService) {
			if ($params['presenter'] !== 'Page' && $params['action'] !== 'default') {
				return NULL;
			}
			$params['slug'] = $slugService->getSlug($params['lang'], $params['page']);

			unset($params['page']);

			return $params;
		},
	]
]);

$presenter->isLinkCurrent('Page:default', $entA) a $presenter->isLinkCurrent('Page:default', $entB) vrací obě TRUE.

Četl jsem jedinou diskusi, kterou jsem našel, ale nepomohla.

Myiyk
Člen | 321
+
0
-

isLinkCurrent('Page:default', array('page' => ...)) by mělo fungovat

co máš v $entA, $entB ?

Editoval Myiyk (27. 1. 2016 11:50)

BigCharlie
Člen | 283
+
0
-

Bohužel nefunguje, taky mě to napadlo. Tohle přitom funguje:

// jsem na /cs/entA-url/
//	TRUE
$this->isLinkCurrent('Page:default', [
	'lang' => 'cs',
	'page' => $entA,
]);

//	FALSE
$this->isLinkCurrent('Page:default', [
	'lang' => 'en',
	'page' => $entA,
]);

Takže to reaguje na parametr lang, ale page to s klidem ignoruje…

$entA, $entB jsou dvě různé entity – vygenerují se dvě různé adresy, otestováno.

Editoval BigCharlie (27. 1. 2016 11:59)

David Matějka
Moderator | 6445
+
0
-

problem je tady, http_build_query se moc nekamaradi s objekty a exportuje pouze public properties: https://3v4l.org/U57Fa, ktery u entit casto nejsou zadne, takze vysledkem pro porovnani je prazdny retezec

BigCharlie
Člen | 283
+
0
-

Aha, tudíž nikoliv chyba na mé straně, ale chyba/požadované chování na straně frameworku.

Takže nezbývá než porovnávat vygenerované url?