Dobrý den,
ač PHP jasně vede, přístup ASP.NET mi tu vždy velmi chyběl - tedy možnost oddělit kód a míchat všechny části se všemi. Nepřibyl nějaký vestavěný prvek, či tak - anebo jen neznáte lepší přístup, jak stavět a míchat části PHP s HTML? Část lze řešit vkládáním HTML souborů v rámci větvení atp. Nyní se mi však nejeví jiná možnost, než vypisovat HTML přímo v PHP. Chtěl bych zkrátka vést .php a .html -> přitom v PHP přímo pracovat s HTML... (Nakládat s jednotlivými elementy.)
Fórum › PHP
Jak nejlépe stavět šablony?

Hledas include? Podle mne, stavet sablony jako programy, tj, mit tam cykleni a pod je nesmysl. To by melo vygenerovat php. Jediny smysl dava prepisovat tam promenne pro jazykove mutace.
A michat vsechno se vsim neni spravny postup. Php by sis mel zpracovat zvlast a az vysledek vypsat do sablony. Rozdil poznas v rychlosti spracovani a tez v logice kodu. Delat "echo" prubezne vede k more chybam. Mas tam treba rozhodovani vypsat stranku nebo obrazek. Na obrazek potrebujes zmenit header a hnedka error, protoze jsi neco uz vypsal pres echo, treba hlavicku stranky. A kdybys to osetril, tak mas error pri zobrazeni obrazku, protoze se pred echo obrazku vloudilo echo hlavicky stranky.
Kdyz nemas zapnuty ob_start, tak echo 1000 radkove tabulky radek po radku je asi 5s zalezitost. Fakt to povazujes za prinos?
Jinak je fura sablonovacich systemu, jestli teda neco takoveho potrebujes. Smarty, nette-latte, xslt, ...
#2 peter
Právě naopak - nechci míchat PHP a HTML - píši to jasně. Chci naopak míchat HTML soubor s PHP souborem - tedy oba kódy v oddělených souborech. ASP.NET umožňuje velmi snadno udržovat HTML mimo serverový kod - s proměnnými, které když na serveru nedoznají naplnění, tak se jednoduše vytratí. Když takovéto proměnné použiji v PHP (se zmíněným include), tak mi to výslednou stránku rozhází. Hledám tedy cestu míchání usercontrol, masterpage, ...
#3 Matěj Andrle
To, co chceš, je klasická MVC architektura, nebo minimálně VC (pro tvé potřeby není M úplně potřeba). Tak, jako tak, při použití PHP se nevyhneš alespoň nějakému PHP kódu přímo v HTML šabloně.
Standardní postup je takový, že v kontroleru si naplníš konkrétní proměnné hodnotami, které tam mají být, tyto proměnné pošleš do view a ve view už s nimi neděláš žádné jiné operace kromě jednoduchých foreach cyklů a případné nějaké podmínky.
Celou logiku aplikace v MVC si pak můžeš představit tak, že nejdříve se provede to, co je v kontroleru, a za to se jakoby nalepí šablona obsahující HTML a PHP, proto jsou v rámci daného requestu v šabloně dostupné proměnné, které do šablony předáš. Je to jeden životní cyklus aplikace.
#4 ondrej39
MVC i formuláře znám a právě proto se neodvažuji psát v PHP o MVC. Nic takového se v PHP vyloženě učinit nedá. Lze jen logicky uspořádat kód, leč PHP funguje holt jinak. Proto mne jen zajímá, zda se třeba již trochu nepředělala funkčnost PHP - která by něco málo uvolila, neboť MVC se celkem rozjelo. Nepotřebuji však dělit na pohled, správu a model/data. Potřebuji jen střídat různé části HTML dle stavu, v jakém bude probíhat komunikace mezi klientem a PHP. A právě nakonec je to vždy nějaké echo a include. (Stavebními základy MVC je kompilace - což u PHP...)
#1 Matěj Andrle
Na vytváření HTML z PHP používám čablony napsané v XSLT. Data naskládám do objektu třídy DomDocument a přes XsltProcessor z toho vygeneruji cílové HTML. Je to velmi rychlé, v řádu jednotek ms.
Šablony se skládají z jednotlivých template a mohou se vzájemně volat, i rekurzívně. Jsou řízeny tokem dat z objektu třídy DomDocument.
Jo takhle, takze ti klasicke preg_replace nebo .$prom. nestaci. Tak zkus preg_match_callback na sablonu. tam se muzes zeptat na
isset($data[$matches[0]]) ? $data[$matches[0]] : '';
#5 Matěj Andrle
MVC nemá s formuláři mnoho společného. MVC je mnohem obecnější architekturou, která se dá použít nejen u formulářů, ale obecně k jakémukoli vstupu a výstupu aplikace. Realizace MVC v PHP je naprosto bezproblémová, pokud v návrhu neuděláš chybu.$_POST vstupuje do controlleru, $_GET vstupuje do view. Napříkald Rest API v MVC vypadá velice elegantně. Krásně se udržuje a rozšiřuje bez větších zásahů do existujícího kódu.

Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
































Uživatelé prohlížející si toto vlákno
Podobná vlákna
Jak nejlépe a nejjednodušeji začít programovat v C++ — založil jakub
Jak nejlépe udělat obraz disku? — založil nevim
Jak nejlépe vypsat v gui formátovaný text? — založil zip123
Jak v GTK+ nejlépe umožnit zadat číslici? — založil Matěj Andrle
Jak se nejlépe naučit Javu pro Android? — založil Darkhunter
Moderátoři diskuze