backlink a odskrolovanie na kotvu
- Matúš Matula
- Člen | 257
Ahoj,
chcel by som docielit, aby po uspesnom prihlaseni uzivatela ho nielen
presmerovalo na stranku, z kt. prisiel pomocou restoreRequest()
,
ale aj odskrolovalo na nejaku kotvu (#). Ale netusim, ako na to :)
- kravčo
- Člen | 721
Metódy Application::(re)storeRequest()
pracujú s
PresenterRequest
om, ktorý o kotve netuší. Riešením by mohlo
byť prepísanie metódy restoreRequest() tak, aby získala url
IRouter::constructUrl(PresenterRequest, IHttpRequest)
pripojila k nej kotvu a potom zavolala
Presenter::redirectUri(url);
// alebo
HttpResponse::redirect(url);
exit;
- Ondřej Mirtes
- Člen | 1536
Musíš předem vědět, na jakou kotvu (tzn. musí to být na každé stránce na stejnou nebo to nějak dělat javascriptem), protože na server se část za # vůbec neodesílá, tudíž PHP o tom vůbec neví.
Pokud to nemusí být variabilní a formulář bys odesílal na stejné
místo, tak po ukotvení ($form = new AppForm($this, $name)
)
zavolej v továrničce $form->setAction .= '#kotva';
- kravčo
- Člen | 721
LastHunter napsal(a):
Musíš předem vědět, na jakou kotvu (tzn. musí to být na každé stránce na stejnou nebo to nějak dělat javascriptem), protože na server se část za # vůbec neodesílá, tudíž PHP o tom vůbec neví.
PHP o kotve vedieť nemusí, musí ju len poslať… Napr.
Environment::getHttpResponse()->redirect('http://localhost/path#anchor');
exit;
Pokud to nemusí být variabilní a formulář bys odesílal na stejné místo, tak po ukotvení (
$form = new AppForm($this, $name)
) zavolej v továrničce$form->setAction .= '#kotva';
Určite nie do action, pretože takto sa kotva pri presmerovaní po spracovaní formulára stratí! Kotva patrí do URL, na ktorú sa presmeruje po spracovaní formulára!
- Ondřej Mirtes
- Člen | 1536
Ano, musí jí poslat, to je mi jasné, ale neví jakou má poslat kotvu, pokud to má být variabilní a ne kotva vždy stejná…
setAction – jo, sorry, spletl jsem si to s jinou situací.
- Ondřej Mirtes
- Člen | 1536
redhead napsal(a):
Environment::getHttpResponse()->redirect('http://localhost/path#anchor'); exit;
Co to? Proč to? Jak to?
Nemá/nemůže to být jen takto:
$this->redirect('Presenter:action#anchor'); //exit už snad taky není potřeba ne?
?
Obávám se, že ne, mícháš tam link v Nette tvaru a podobu výsledné URI… Takže spíš takto:
$this->redirectUri($this->link('//Presenter:action') . '#anchor');
- redhead
- Člen | 1313
Aha, škoda.
Já už doufal:
https://api.nette.org/…ter.php.html#814
ale createRequest se nevolá při redirectu..
- kravčo
- Člen | 721
redhead napsal(a):
Nemá/nemůže to být jen takto:
$this->redirect('Presenter:action#anchor'); //exit už snad taky není potřeba ne?
?
Nevedel som, že odkazy na Presenter:action podporujú aj kotvy, takže
stačí… A správne, exit
v tomto prípade nie je potrebný,
v tom mojom však áno…
ale createRequest se nevolá při redirectu..
Ale volá :)
- Matúš Matula
- Člen | 257
Vdaka za vase nazory a rady. Nakoniec som to spravil podla kravcovej prvej rady.
Dikes