MVC a jednoduché stránky

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

Zdravím,

weby už nějaký ten pátek dělám, ale teprve nedávno jsem se rozhodl, že je začnu dělat v Nette. S novým nástrojem (technologií, frameworkem, pomůckou.. jak jen chcete) přišly taky nové problémy. Tím hlavním, který teď řeším, je použití modelu MVC na jednoduché stránky. Těmi jednoduchými stránkami myslím průměrný web, kde je polovina (popř. celý web) statická (kontakt, něco o mně, reference, atd.) a polovina dynamická (např. nějaké články – stejná struktura, jiný obsah). A teď ona otázka. Má cenu na takový web použít model MVC nebo bude jednodušší klasický postup s využítí nástrojů, které Nette poskytuje?

O Nette jsem si přečetl hodně, taky jsem si prošel spoustu příkladů, ale odpovědi na mé otázky jsem nenašel… převážně proto, protože příklady jsou zaměřeny na jeden problém/otázku, ale ty další pochopitelně neřeší.

Příklad:
Mám stránku Kontakt, kde jsou kontaktní informace na mou maličkost. Tuto stránku bych v budoucnu měnil minimálně. Má cenu na takovou stránku vůbec použít šablonu? A pokud ano, jakou „formu“ by ta šablona měla mít? Nahrát data přímo do ní nebo je tam umisťovat přes KontaktPresenter? Abych nějak osvětlil tuto otázku. Stránka/šablona Kontakt má jediný účel a použití a tj. zobrazení kontaktních informací. Nikde jinde použita nebude. Má proto smysl oddělit jednoúčelná data ze šablony a umístit je do Presenteru? Nebo je jednodušší mít vše v té šabloně a Presenterem jen onu šablonu načíst a vykreslit? V případě dynamických dat (např. dat z db) je použití šablony a Presenteru jasné, ale jak tedy postupovat se statickými daty.

Pozn. Web, o kterém mluvím, nebude plnit jen úlohu osobních stránek, ale půjde o web, kde bych chtěl různě experimentovat a opravdu ty stránky vyvýjet. Například přidat možnost změnit celý design web – ala změna designu na phpBB fórech – proto ty šablony.

Omlouvám se za rozsáhlost příspěvku, ale potřebuji si to vše ujasnit.

S pozdravem a poděkováním
Bernard

Inza
Člen | 330
+
0
-

Zdravím, za rosáhlost příspěvku se vůbec omlouvat nemusíte;-), alespoň jsme lépe pochopili otázky – já také píši rozsáhlé příspěvky. Nevím, zda jsem ta správná osoba a zda vše vysvětlím zcela správně a korektně, ale ostatní mě kdyžtak opraví.

Takže, ptáte se na několik věcí:

  1. Zda je vhodné použít tak velký nástroj jako je Framework na jednoduchý web
  2. Kam máte umisťovat ona statická data
  3. A také na to, jak správně použít MVC.

Pokusím se nyní na všechny postupně odpovědět.

ad 1: Ano, vhodné to je. Nette Framework nezvyšuje jen „komfort“ a efektivitu programování, ale i bezpečnost výsledného webu – jako příklad lze použít fomruláře, nebo escapování znaků v šablonách. Navíc já jsem nyní např. v situaci, že napsání sebemenšího webíku je pro mne rychlejí v Nette než-li bez něj. Dalším argumentem pro je existence věcí jajo je např. RobotLoader, který řeší neustálý v PHP běžný problém s inkludováním souborů a s cestami k nim. Důvodů by se našlo více. Důvod proti se může zdát to, že je to může být „overhead“ něco jako „kanón na vrabce“ – ale dle mého názoru je opak pravdou.

ad 2 a 3 (hodně to spolu souvisí): V MVP (i MVC) modelu to má fungovat tak, že Presenter je věc, která prezentuje data, která jí dá model. A k této prezentaci používá pohled. Tedy má správně fungovat tak, že žádná data obsahovat nemá, Presenter má data vzít z modelu a dát je pohledu, který je zobrazí. Přičemž zde je nutné určit hranici toho kdy jsou data součástí pohledu (a budou tedy fyzicky zapsaná v šabloně, či render metodě presenteru) a kdy už jde o data aplikační a ta patří do modelu. My ve firmě tuto hranici určujeme tak, že u některých dat je zcela jasné, kam patří (např. jakmile se to sosá z databáze, je to jednoznačně součást modelu, stejně jako, pokud se to někdy bude prohledávat, patří to do modelu). Pravdou je, že u některých dat je to obtížné určit. Viz váš problém. Já osobně bych se k vašem případu postavil tak, že bych použil Nette celé (neboť chcete aplikaci rozšiřovat a experimentovat, atd.) a na data, buŤ zatím statická vyrobil model (klidně ať jsou v něm zapsaná natvrdo v nějakém poli, nebo přímo hardcoded). Potom až uzraje doba budete ta data chtít třeba přesunout do databáze (aby bylo možné je např pomocí nějaká textarey upravit nebo tak) a pokud byste je měl uložená v modelu, jediná věc, kteoru byste musel změnit by byl onen model. A to je to největší kouzlo.

To že mám správně napsanou MVC aplikaci totiž poznám podle toho že:

  • Když chci přesunout data aplikace ze souborů do databáze, tak jediné co budu měnit je model.
  • Když chci výstup z HTML předěla do XML, nebo změnit vzhled, jediné na co budu sahat je Pohled (tedy šablona/y)
  • A až teprve když budu chtít změnit chování aplikace, budu muset měnit presenter…

A hlavně o tom je MVC, u nás MVP…

Doufám, že je to teď jasnější a kdyžtak se ještě ptejte;-)…

Jod
Člen | 701
+
0
-

Na statické dáta si sprav napr. StaticPresenter ktorý bude načítavať šablony napísané napríklad v texy, podľa požiadavku. Tým pádom stránky napr. kontakt, o mne a pod. bude odkazovať na Static:kontakt, Static:omne.
S takýmito vecami sa netreba príliš babrať, pričom je to jednoduché, nenarúša to myslím MVP/C konvencie a zabere to minimum času :)

Ondřej Mirtes
Člen | 1536
+
0
-

Já jen dodám, že i „statická“ data se hodí mít v databázi, jsou pak snadněji přístupná k editaci v CMS.

Bernard Williams
Člen | 207
+
0
-

Super, mockrát všem děkuji za ujasnění.

reflex
Člen | 28
+
0
-

LastHunter napsal(a):

Já jen dodám, že i „statická“ data se hodí mít v databázi, jsou pak snadněji přístupná k editaci v CMS.

Tady si dovolím nesouhlasit. Připadá mi jednoduší otevřít si šablonu a editovat text v ní, než dohledávat/editovat položku v databázi. Nemluvím o přenášení změn atd..

PaBi3
Bronze Partner | 62
+
0
-

To potom skús vysvetliť klientovi, ako sa má pripojiť na FTP, upraviť správne súbor, vysvetliť mu načo sú tam tie zložené zátvorky {} atď. V nejakej databáze by tie texty určite mali byť.

Ondřej Brejla
Člen | 746
+
0
-

To je otázka názoru a konkrétní situace…zkus klientovi vysvětlit, jak se používá wysiwyg případně podobný editor s nějakou syntaxí, tak, aby výsledek nebyl zbastlený (x)html výstup, který v horším případě ještě rozsype web. Prostě záleží na konkrétní situaci.

Jod
Člen | 701
+
0
-

PaBi3, ale v tomto prípade to už niesu statické dáta !!!

PaBi3
Bronze Partner | 62
+
0
-

Jod: viem, veď to bola iba reakcia na príspevok. Uviedol som prípad, že si stránku spravuje klient sám.