URL adresa príslušná k view súboru

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

Zdravím,

práve si prechádzam základný tutorial z dokumentácie nette o tvorbe blogu. Ak som správne pochopiil, tak keď spravím nejaký súbor v priečinku app/presenters/templates presenter PostPresenter.php a v priečinku app/presenters/templates/Post/show.latte, tak by mala existovať URL adresa, kde môžem vidieť obsah show.latte. Rozumiem tomu správne?
Ak áno, aká je tá adresa?

Jan Mikeš
Člen | 771
+
0
-

U presenteru je jedno jak se jmenuji, dulezita je jejich trida a namespace (v tomto pripade tedy PostPresenter), pro lepsi poradek ale samozrejme se pojmenovavaji soubory podle jejich obsahu, tedy PostPresenter.php, u sablon tomu tak neni, tam je nazev dulezity, muzes vyuzit bud Post.show.latte (pro presenter Post view show) nebo tak jak mas ty Post/show.latte.

Vyslednou url urcuje router, defaultni routa <presenter>/<action>[/<id>] by ti pro Post:show mela vygenerovat url /post/show

Martinxy
Člen | 10
+
0
-

Dík za odpoveď. Ten hypertextový odkaz mi to už generuje tak, ako píšeš, akurát keď naň kliknem, tak napíše, že page www/post/show?postId=1 does not exist. A myslím, že som spravil všetko, čo sa píše v tutoriale. Akurát z tutoriálu mi nie je jasné, ako vytvoriť tú stránku, čo by mala byť na adrese www/post/show?postId=1.
Chápem, že jej obsahom by malo byť to, čo je v Post/show.latte, ale nechápem čo má zabezpečiť, aby sa ten obsah dostal na net.

nettolog
Člen | 68
+
0
-

Pokud ti nevyskočí laděnka (No route for HTTP request.), ale hláška např. z Apache, tak bude problém spíš v htaccessu. Což možná souvisí s tím, že se ti tam generuje „www“, což by ve výchozím stavu měla být jen složka pro přímo dostupný obsah (js, css, obrázky, apod). Zkus se podívat tady, jestli máš správnou strukturu a správné htaccessy (v / jen dvouřádkový a ve www ten delší).

Editoval nettolog (1. 8. 2015 23:17)

Martinxy
Člen | 10
+
0
-

Priečinkovú štruktúru mám presne rovnakú, akurát sa mi základný adresár nevolá nette-blog ale nejak inak. Ale neviem kde mám kontrolovať tie htaccessy, čo píšeš. V app/router/RouterFactory.php mam všetko tak ako bolo defaultne v sandboxe.
A hlavne ktorá časť kódu je zodpovedná za vytvorenie tej stránky nového príspevku? Lebo toto je podľa mňa dôležité a vôbec mi to nie je jasné.

nettolog
Člen | 68
+
0
-

To má na starosti právě ten router. Výchozí routa podle mě zbytečně mate, zkus se podívat na příklady níže.

$router = new RouteList;
$router[] = new Route('', 'Homepage:default'); /*na stránce / se požádá o HomepagePresenter a jeho pohled default.latte*/
$router[] = new Route('clanky', 'Clanky:prehled'); /*na stránce /clanky se požádá o ClankyPresenter a jeho pohled prehled.latte*/
$router[] = new Route('clanek/<id-clanku>[/nadpis-clanku]', 'Clanky:single'); /*na stránce /clanek/12 nebo /clanek/12-nejaky-nadpis (nadpis je v url nepovinný) se požádá o ClankyPresenter a jeho pohled single.latte*/

Například tedy pro homepage:

  • data se budou řešit v app/presenters/HomepagePresenter.php (viz. výchozí sandbox)
  • pohled se bude načítat z app/presenters/templates/Homepage/<název podle názvu pohledu v routě; v tomto případě default.latte>

V každé routě můžeš mít libovolné parametry. <parametr> označuje povinný parametr, [parametr] nepovinný parametr

V presenteru pak obdržíš parametry:

$params = $this->getParameters();
echo $params['parametr']; /* hodnota pro parametr s názvem "parametr" */