Hezké url – práce s parametrem

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
MartinitCZ
Člen | 580
+
0
-

Ahoj,
lámu si tu hlavu nad jednuducho otázkou, co je lepší?

$article = [
	'title' => 'Příliš žluťoučký kůň',
	'slug' => 'prilis-zlutoucky-kun',
];
  1. Ukládat si slug do db a odkazy tvořit ve tvaru {link defaul, slug ⇒ $article->slug}
  2. Využít masky {link default, title ⇒ $article->title}
JHadamcik
Člen | 47
+
0
-

Já pokud už vůbec zvažuji slug pak jej používám a to proto, že je unikátní a u nadpisu se může stát, že není.

Obecně je to ale jinak fuk bych řekl.

Re4DeR
Člen | 71
+
0
-

url by se menit nemelo a title se ti muze zmenit

froggy
Člen | 17
+
0
-

S tou neměnností URL si nejsem jistý.
Na různých projektech jsem zkusil/viděl dva složitější přístupy.

  • Do databáze se uložil slug podle title, vedle existovala tabulka starých slugů a v případě, že vznikl HTTP požadavek na starý slug, tak došlo k redirectu na nový.
  • Slug se vždy vygeneroval a žádná tabulka historických neexistovala. Pokud se objevila duplicita, tak se připojilo ke slugu ID položky.

Pokud by existovalo další řešení problému, kdy chci používat slug (místo ID) v URL a zároveň ošetřit to, aby starší verze slugů nekončily chybou 404, zajímalo by mně.

MartinitCZ
Člen | 580
+
0
-

Ještě někdo přispěje se svým názorem? Určitě to pomůže více lidem :)

JHadamcik
Člen | 47
+
0
-

Už mám jasnější názor. Používal bych slug. Kvůli jazykovým verzím. Můžeš mít nadpis v 5ti jazycích a slug jeden. Navíc opravíš nadpis článku a odkazy ti nesedí, když nemáš slug.

Oli
Člen | 1215
+
0
-

Používám slug. Nepoužívám to teda, tak jak uvádíš v prvním příspěvku, ale odkza je ve tvaru:

{link Presenter:action $id}

Kdy se mi $id pomocí filtrů v RouterFactory přepíše na slug. Má to tu výhodu, že pokud bych chtěl kdykoli na cokoli změnit tvar url, tak nemusím do {link} vubec zasahovat…

MartinitCZ
Člen | 580
+
0
-

@**JHadamcik**: Přijde mi, že jsi to nějak pomotal. Neprohodil jsi slug a id?

Mě osobně se asi nejvíc zamlouvá tabulka slug, kde bude id článku a jeho slug. Díky tomu si ošetřit změnu titulku a neexistující url.

Jan Tvrdík
Nette guru | 2595
+
0
-

@martinit: Jsem pro variantu (1), tj. ukládat do databáze slug a při tvorbě odkazů ho předávat. Přičemž při návrhu databáze pamatuj, že musíš uchovávat i staré slugy, aby jsi byl schopen zajistit trvalost odkazů.

Varianta (2) neumožňuje mít URL ve tvaru http://example.com/<slug>, ale musíš použít http://example.com/<id>-<slug> (takže i při tvorbě odkazů musíš předávat oba parametry), protože ze samotného slugu nejsi schopen určit cílovou stránku. Tato varianta URL se mi osobně nelíbí, protože jsi v podstatě nucen akceptovat URL jako http://example.com/<id>-jakakoliv-blbost.