Skip to content

Url - Příklady použití

Language handling

Přechod mezi jazyky

use Core\Url;

$currentUri = '/cs/kontakt';

// Přepni na angličtinu
$englishUri = Url\changeLangUri('en', $currentUri);
// vrací: '/en/contact' (pokud je slug přeložený)

// Přepni na franštinu
$frenchUri = Url\changeLangUri('fr', $currentUri);
// vrací: '/fr/contact'

Ověření jazyku v URI

use Core\Url;

$uri = '/cs/stranka';

// Je v URI jazyk?
if (Url\isLangInUri($uri)) {
    echo "Ano, je tam jazyk";
} else {
    echo "Není tam jazyk";
}

URL creation

Interní odkazy

use Core\Url;

// V šabloně nebo kódu
$url = Url\create('kontakt');
// Výsledek: '/kontakt' (default jazyk)
//      nebo '/cs/kontakt' (pokud LANG='cs' a není default)

$url = Url\create('/o-nas');
// Výsledek: '/o-nas'

$url = Url\create('/cs/produkty');
// Výsledek: '/cs/produkty'

Externí URL

use Core\Url;

// Webové stránky
$url = Url\create('https://example.com');  // 'https://example.com'
$url = Url\create('www.google.com');       // 'https://www.google.com'

// Speciální protokoly
$url = Url\create('mailto:info@example.com');
// 'mailto:info@example.com'

$url = Url\create('tel:+420123456789');
// 'tel:+420123456789'

// JavaScript
$url = Url\create('javascript:alert("Hello")');
// 'javascript:alert("Hello")'

Anchory

use Core\Url;

$url = Url\create('#kontakt');     // '#kontakt'
$url = Url\create('#formular');    // '#formulář'

Admin URL

use Core\Url;

// Pokud je ADMIN = true, automaticky přidá URL_APP_ADMIN
$url = Url\create('uzivatele');
// Výsledek (v adminu): 'https://example.com/ADMIN/uzivatelé'
// Výsledek (na webu): 'https://example.com/uzivatelé'

Slug translation

Práce se slugy

use Core\Url;

$path = '/cs/kontakt-na-nas/formulář';

// Extrahuj první segment
$slug = Url\slugFromPath($path);
// vrací: 'kontakt-na-nas'

// Získej překlad slugu
$translated = Url\slugForLang('contact', 'en');
// Volá API: GET /getData/Slugs/slug?slug=contact&lang=en&web=WEB
// vrací: 'contact' nebo přeložený slug

Náhrada slugu v URI

use Core\Url;

// SLUG konstanta musí existovat:
// define('SLUG', [
//     'slug' => 'kontakt',
//     'languages' => [
//         'en' => 'contact',
//         'fr' => 'contact'
//     ]
// ]);

$newUri = Url\changeSlug('en', '/cs/kontakt');
// vrací: '/en/contact' (pokud SLUG obsahuje 'kontakt' → 'contact')

$newUri = Url\changeSlug('en', '/kontakt');
// vrací: '/contact' (bez jazykového prefixu)

Redirection

Jednoduché přesměrování

use Core\Url;

// Stránka se přesunula
if (!$page) {
    Url\redirect('/nova-stranka');  // 301 Moved Permanently
}

// Dočasné přesměrování
Url\redirect('/temp-stranka', 302);

// Bez parametru = redirect domů
Url\redirect('');  // -> '/'

Ověření existence URL

use Core\Url;

// Kontrola zdrojové stránky
$externalUrl = 'https://example.com/api';

if (Url\urlExists($externalUrl)) {
    // API je dostupné
    $data = file_get_contents($externalUrl);
} else {
    // API není dostupné
    Url\redirect('/error');  // Přesměruj na error stránku
}

Error handling

404 stránka

use Core\Url;

// Pokud stránka neexistuje
if (!$pageExists) {
    die(Url\show404());
}

// Nebo v routeru:
return Url\show404();

Automaticky: - Nastaví PAGE = '404' - Vykreslí app/templates/404.tpl - Vrací HTML


Utility

Standardizace cesty

use Core\Url;

$path = Url\addLeadingSlash('kontakt');
// vrací: '/kontakt'

$path = Url\addLeadingSlash('  slozka  ');
// vrací: '/slozka' (trim + slash)

$path = Url\addLeadingSlash('/produkty');
// vrací: '/produkty' (už má slash)

Bootstrap příklad

Detekce jazyka a stripping prefixu probíhá přímo v app/bootstrap.php — bez pomocných funkcí, čtení superglobalů explicitně na hranici:

use function Core\I18n\validLanguages;

$_validLangs = validLanguages();
preg_match('#/(' . implode('|', $_validLangs) . ')/#', $_SERVER['REQUEST_URI'], $_match);
$_lang = $_match[1] ?? ($_POST['lang'] ?? '');
LangContext::setLang(in_array($_lang, $_validLangs, true) ? $_lang : LangContext::defaultLang());
if ($_match) {
    $_SERVER['REQUEST_URI'] = preg_replace('#' . $_match[0] . '#', '/', $_SERVER['REQUEST_URI'], 1);
}
unset($_validLangs, $_match, $_lang);

Typické chyby

Špatné: Vytvoření URL bez create()

// Špatně – nerespektuje LANG a settings
$url = '/kontakt?id=123';

Správně: Používej create()

use Core\Url;

// Správně – respektuje jazyk, admin, atd.
$url = Url\create('kontakt?id=123');

Špatné: Redirect bez exit

// Špatně – kód pokračuje po redirect()
Url\redirect('/nova-stranka');
echo "Toto se nikdy nevypíše";

Funkce redirect() má atribut #[NoReturn] – skript se automaticky ukončí!

Správně: Přímé volání

use Core\Url;

// Správně
if (!$found) {
    Url\redirect('/home');
}

Souhrn - co si zapamatovat

  1. Language handlingchangeLangUri()
  2. URL creationcreate() je tvůj nejlepší přítel
  3. Redirectionredirect() vždy ukončí skript
  4. 404show404() vrací HTML
  5. ValidaceisLangInUri()
  6. Slug translationchangeSlug(), slugForLang()
  7. UtilityaddLeadingSlash(), urlExists()