routování neexistujících stránek na nettephp

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

Pořád mi vrtá hlavou, jestli a jak by šlo naroutovat to co je zde na nette.org

tedy nějaký normální router co zobrazuje existující stránky

a pak něco co u neexistující stránky ( https://nette.org/cs/nic ) nabídne možnost jí vytvořit

je toto děláno přes chybu (errorPresenter) nebo není?

redhead
Člen | 1313
+
0
-

řekl bych že je to díky wikině, která tu běží…

něco jako když na wikipedii, když stránka neexistuje, tak ti ji nabídne ji vytvořit.

grogy
Člen | 147
+
0
-

Řekl bych že to jde udělat přes ErrorPresenter jak říkáš, nenapadá mě jiný rozumný způsob jakým to ošetřit.

kravčo
Člen | 721
+
0
-

Vidím to tak, že ak stránka neexistuje, nie je to chyba, preto by túto situáciu nemal spracovať ErrorPresenter. Povedzme, že máme prezenter Page, akcie view, edit a perzistentný parameter name. Pri požiadavke na Page:view?name=nieco môžu nastať dve možnosti:

  • stránka existuje a štandardne sa zobrazí (akcia view pohľad view)
  • stránka neexistuje a zobrazí sa „formulár“ na vytvorenie (akcia view pohľad create)

Viac na stránke Action vs. View.

Blizzy
Člen | 149
+
0
-

Podle mě je to nic normální parametr předaný presenteru, který spravuje stránky.

Jednoduše pokud dostane v parametru identifikátor existující stránky, zobrazí ji, pokud dostane neexistující, nabídne ji vytvořit.

EDIT: kravčo byl rychlejší a podrobnější :)

Editoval Blizzy (20. 8. 2009 16:33)

jasir
Člen | 746
+
0
-

Také myslím, že je nesmysl do toho tahat ErrorPresenter, Kravčo a Blizzy mají nejspíše pravdu ;-) …

ic
Člen | 430
+
0
-

Tak i errorPresenter defaultně odesílá 200, takže uživatel by nic nepoznal, ale jinak váš plán vypadá rozumě, zkusím to nějak tak udělat taky.

grogy
Člen | 147
+
0
-

Error presenter odesílá 404 ne?

A myslím, že i tak by to bylo tady v tomto případě správně – protože stránka neexistuje, ale další možností je ji teprve vytvořit. Proto mi příjde zcela v pořádku zpracovávat přes něj.

Pokud by se jednalo o určitou sekci webu example.com/neco/tady-se-teprve-vytvari tak udělat jinak ale ovšem pokud to jde v celém rosahu webu tak mi příjde lepší ErrorPres.

Edit:// Tu na nette.org se také odesílají 404 hlavičky se šablonou robots – noindex,nofollow

Editoval grogy (20. 8. 2009 17:36)

David Grudl
Nette Core | 8150
+
0
-

Jak tu zaznělo, neexistující stránka není (v případě Wiki obecně) chyba, ale stav, se kterým presenter počítá a reaguje na něj zobrazením jiné šablony. A taky vyhozením kódu 404, aby to Google neindexoval.

Hele, teď mě tak napadá – co kdyby chybový HTTP kód vyhazoval rovnou Application (když není definovaný $errorPresenter stejně to dělá), čímž by se zjednodušil běžný ErrorPresenter?

grogy
Člen | 147
+
0
-

David Grudl napsal(a):
…co kdyby chybový HTTP kód vyhazoval rovnou Application…

To by bylo dobré (lepší!) :)

Jan Jakeš
Člen | 177
+
0
-

Narazil jsem na tohle téma a docela by mě zajímalo, jak je tu řešena hierarchie stránek. Pokud například vytvořím novou stránku ve tvaru:

example.com/neco/jeste-neco/nazev-stranky

Uloží se do databáze prostě string neco/jeste-neco/nazev-stranky nebo se to nějak rozseká na kategorie? A co by se stalo, kdybych po vytvoření výše uvedené stránky zavolal pouze example.com/neco/jeste-neco?

A jak se řeší přejmenování stránky?