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
PresenterRequestom, 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