URL do proměnné

Ernst
30. dub 2016 19:28 #126838
Pomocí
$jdoc = \JFactory::getDocument();
$jdoc->getBase()
Dostanu do proměnný URL aktuální stránky.

Dostanu se ale nějak k URL předchozí stránky?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
01. kvě 2016 22:26 #126846
Base není aktuální url, ale URL úvodni stránky.
Pro aktuální URL je lépe použít
JUri::current();
Předchozí URL už z principu fungování protokolu HTTP jen tak jednoduše nezískáte. Můžete použít hodnotu
$_SERVER['HTTP_REFERER'];
nebo "Joomlovsky"
JFactory::getApplication()->input->server->get('HTTP_REFERER');
ale ne vždy bude tato hodnota vyplněná, a ne vždy musí obsahovat to co by jste čekal (např. může obsahovat URL stránky vyhledávače, kde uživatel klikl na odkaz na Vaše stránky).
Pokud tedy z nějakého důvodu potřebujete URL předchozího zobrazení Vašich stránek, můžete použít ukládání do Session, tedy např. něco jako
$app =JFactory::getApplication();
// Zjištění poslední uložené url
$lastUrl = $app->getUserState( "last_url");
if (empty($lastUrl)) {
  // url ještě nebylo, uloženo, je to první stránka, kterou uživatel otevřel
} else {
  // url již bylo vyplněno
}
// uložení aktuální url do session
$app->setUserState( "last_url", JUri::current() );

bližší info např. v dokumentaci .
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
02. kvě 2016 15:59 #126851
díky za vyčerpávající info

jen ale $jdoc->getBase() mi dalo opravdu aktuální stránku

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
02. kvě 2016 20:31 #126855
Nevím, nestudoval jsem dokumentaci, ale JUri::base vrací homepage, předpokládal jsem, že je to stejné.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
03. kvě 2016 12:52 - 03. kvě 2016 12:55 #126858
tak jsem se dostal k testování:
JFactory::getApplication()->input->server->get('HTTP_REFERER');
vrací něco jako : 'httplocalhostindex.phpcz', tedy v podstatě nepoužitelné
$_SERVER['HTTP_REFERER'];
vrací správně 'http://localhost/index.php/cz/' (úvodní stránku uvádím jen pro ilustraci, jinak to vrací správně předchozí stránku)

celé to dělám hlavně kvůli chronoforms, protože tam neexistuje možnost vrátit se na stránku, ze které byl formulář volán.
takže na začátku načtu do formuláře předchozí url jako skryté pole.
Na konci ho chci zavolat.
Není to však jednoduché a řeším to částečně i s jejich podporou.

Pokud se mi řešení podaří, zveřejním ho zde. Nebude samozřejmě dokonalé , vzhledem možnosti použití "zpět" v prohlížeči, ale to je vždy po odeslání formuláře problematické

PS ještě mě napadlo, nešlo by to nějak vytáhnout také z drobečkové navigace?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
03. kvě 2016 13:09 #126859
PS2 jo to nejde

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Cony
03. kvě 2016 14:51 #126863
Aha, zapomněl jsem na filtry, správně třeba
JFactory::getApplication()->input->server->get('HTTP_REFERER', '', 'raw');
Více o filtrech zde
Poděkovali: Ernst

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
07. kvě 2016 16:37 #126944
To poslední bylo ono.
Celé řešení problému jsem popsal zde: www.joomlaportal.cz/forum/71-joomla-3-0-...o-chronoforms#126943

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
07. kvě 2016 16:51 #126945
ještě by možná stálo za to zakázat prohlížeči použít poté tlačítko zpět a vrátit se tak na předvyplněný formulář.
Budu nad tím přemýšlet nebo napadá někoho nějaké elegantní řešení?

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.