Autor | Zpráva | ||
---|---|---|---|
lionel messi Profil |
#1 · Zasláno: 19. 9. 2013, 21:57:09
Zdravím,
učím sa pracovať s PHP a chcel by som vložiť súbor do stránky. Problém však je, že by som potreboval vložiť iba časť súboru (napr. bez doctype a hlavičky). Príkaz include mi samozrejme vloží celú stránku. Existuje nejaká funkcia alebo alternatíva k include , ktorá by mi umožnila vložiť len vybranú časť súboru alebo je nutné vytvoriť verziu súboru bez doctype a hlavičky a tú includovať? Ďakujem veľmi pekne za odpoveď.
|
||
Manny Profil |
#2 · Zasláno: 19. 9. 2013, 22:01:13
Include ti vloží nalinkovaný soubor. Co v tom souboru bude, či část stránky nebo celá, je jen na tobě.
|
||
nemeja Profil |
#3 · Zasláno: 19. 9. 2013, 22:09:15
S tím ti pomůže Output Buffering, funguje to tak, že si zapneš buffer, includneš si soubor a až to bude všechno, kde chceš něco odmazat, tak si vlastně to co by se ti normálně vložilo na obrazovku schováš do proměnné, tu projedeš funkcí preg/str_replace, odstraníš co potřebuješ a potom to celé pomocí echo vypíšeš na obrazovku.
Př. ob_start(); // zapneme bufferování include( "stranka1.html" ); // načteme stránku, všechny funkce se provedou, ale místo na obrazovku se nám to zatím jenom uloží do paměti $stranka = ob_get_contents(); // uložíme buffer do proměnné ob_clean(); // vyčistíme buffer include( "hlavicka.html"); // sestavíme stránku, atd. str_replace( "<!doctype html>", "", $stranka ); // odstranime doctype echo $stranka; // vypíšeme stránku include( "paticka.html"); // můžeme klidně pokračovat v skládání |
||
Alphard Profil |
#4 · Zasláno: 19. 9. 2013, 22:39:25
nemeja [#3]:
To je přece hloupost. Mrhání výkonem, zbytečné zesložiťování kódu a zanášení wtf prvků :-) Parsery mají smysl, když je potřeba něco vytáhnout z cizí stránky, běžně určitě ne. Když už by musel být celý kód v jednom souboru, není problém dát tam podmínku, normálně se vykoná. Ale správné řešení je rozdělit celou stránku na menší kousky a skládat, jak je potřeba. |
||
nemeja Profil |
Alphard:
když si budu sám vytvářet template system, tak samozřejmě budu dodržovat určitou konvenci, aby se mi to nekřížilo. Každopádně je dobré znát i tento způsob pro případ, že by stránky odněkud stahoval, nebo je nechce přepisovat ručně. |
||
lionel messi Profil |
#6 · Zasláno: 21. 9. 2013, 12:07:49
Manny:
„Include ti vloží nalinkovaný soubor. Co v tom souboru bude, či část stránky nebo celá, je jen na tobě.“ To samozrejme viem, ale nechcem tento súbor "sekať" na dva. Alphard: „Když už by musel být celý kód v jednom souboru, není problém dát tam podmínku, normálně se vykoná.“ Trochu som nad tým rozmýšľal, nenapadol ma žiadny spôsob, ako podmienkou odstrániť doctype. Inak, tá podmienka by mala byť v includovanom súbore alebo v cieľovom? Ako schodnejšie mi príde riešenie od [#3] nemeja. „Ale správné řešení je rozdělit celou stránku na menší kousky a skládat, jak je potřeba.“ Na to som už prišiel, čo už, učíme sa na vlastných chybách :-) |
||
polonium Profil |
#7 · Zasláno: 21. 9. 2013, 12:30:47 · Upravil/a: polonium
Kdyz tedy pouzivas include toho templatu a nechces ho rozsekat na vice casti, skus toto:
index.php $chciDocType = true; include "templates/stranka.phtml"; stranka.phtml <?php if ($chciDocType) { ?> <DOCTYPE html> <?php } ?> Jinak rozdělit či nerozdělit ten soubor na víc částí je otázka. Obě možnosti jsou schůdné, jde jen o to jak se k tomu postavíš. Podle mě dobrý způsob je ten co psal [#3] nemeja skombinovat s [#7]. Je v tom všechno, můžeš plnit stránku nějakým obsahem a zároveň máš kontrolu nad tím kdy ten výstup pošleš ven. Jen bych nerozděloval hlavičku a patičku. Prostě bych to nechal v souboru layout.phtml. |
||
Časová prodleva: 11 let
|
0