Možnost u backlinku navolit vlastní klíč
- Ascaria
- Člen | 187
Zdravím,
bylo by dobré mít možnost u backlinku zadat klíč ručně (strlen != 5 kvůli klasickým backlink klíčům), a tím pádem mít možnost backlinky „přepisovat“.
Například datagrid generujcí backlinky (po vyplnění formu se do datagridu vrátíme backlinkem) při akcích (další stránka/filtr..) generuje pořád nové a tím vzniká bordel. Ten by se dal částečně omezit tím, že by grid generoval backlink jen jeden s nadefinovaným klíčem a přepisoval ho.
Editoval Ascaria (15. 11. 2012 14:34)
- David Ďurika
- Člen | 328
presne toto som potreboval aj ja minule! len som nechcel hackvat, tak som to nakoniec neviriesil…
- Ascaria
- Člen | 187
Ano, backlink generuje unikátní klíč při každém storeRequest (i když je to na stejnou stránku) a nejde mu vnutit nějak klíč, kerý má použít. Pokud budu v datagridu stránkovat dopředu a dozadu 10×, tak mi vznikne právě tolik backlinků vedoucích jen na 2 stránky (trvání mají 1 den, protože editační formulář nemusí být vyplněn za 10 minut). Pokud mu klíč vnutím, bude mít datagrid vždy jeden klíč a ten bude přepisovat.
@achtan: Já to pořešil tak, že mám ve svém BasePresenteru overridnutý storeRequest, kterému už vnutit klíč jde.
/**
* Stores current request to session.
* @param mixed optional expiration time
* @param mixed optional backlink key
* @return string key
*/
public function storeRequest($expiration = '+ 10 minutes', $key = null)
{
$session = $this->getSession('Nette.Application/requests');
if(null === $key) {
do {
$key = Nette\Utils\Strings::random(5);
} while(isset($session[$key]));
} elseif(isset($session[$key])) {
unset($session[$key]);
}
$session[$key] = Array($this->getUser()->getId(), $this->request);
$session->setExpiration($expiration, $key);
return $key;
}
Editoval Ascaria (19. 11. 2012 16:27)
- ic
- Člen | 430
Pokud nejde třeba o webovou analytiku, ale o to jaký pocit z toho bude
mít uživatel, (případně jakou adresu si uloží do záložek / postne
někam jinam na internet), mohl by tohle pěkně řešit javascript a novinka
history.replaceState
. Já už tohle k odebírání fid a backlink
parametrů používám ( https://github.com/…layout.latte#L5
). Muselo by se ale trochu upravit… aktuálně se sežere fid (tam je to
super, protože po obnovení stránky už uživatel flash zprávičku vidět
nemá) i backlink stejným způsobem (a u backlink to může být problém,
protože F5-kou uživatel přijde o možnost vrátit se na předchozí
stránku). Takže by to chtělo pro tento účel javascript poupravit, aby si
backlink při refreshi stránky zapamatoval, teoreticky by se to asi nějak
dalo, ale prakticky jsem to ještě nezkoušel.