ugrás a tartalomhoz

Sablon betöltés

iddqd · 2012. Jan. 26. (Cs), 17.47
Sziasztok!
Tanuló projekten dolgozom MVC megközelítésben, viszonylag frissen ismerkedem vele ( nagyon szimpatikus ez a felépités ).
Külön állományokba "vágtam" a sablonok header, footer részét ezek szinte mindenhol állandók. A testeket cserélgetném a különböző oldalakon.
Így minden függvényben load-olom külön a headert, footert és az adott view-et.
Van különbség időben vagy bármi másban e között és az a megoldás között ha 1-1 komplett sablont töltenék be? Illetve máik kérdés, lenne sok olyan eset hogy a header footer állandó sőt az oldal egy része is csak részeket kellene bele szurkálni különböző esetekben pl: mondjuk valamilyen edit opcióra megjelenne egy űrlap stb. Ezt mind a komplett oldal load-olás nélkül. Van erre valamilyen módszer??! lenne elképzelésem de kicsit bele bonyolodtam. Köszi előre is
 
1

Sablon

Poetro · 2012. Jan. 26. (Cs), 18.09
Már csak az a kérdés, mit értesz sablon alatt? Mert a header és footer is egy sablon, és annak is a view rétegben lenne a helye. Az, hogy egy oldal mennyi sablonból épül fel az csak az alkalmazásodtól függ.
Van különbség időben vagy bármi másban e között és az a megoldás között ha 1-1 komplett sablont töltenék be?

Minden sablon komplett. Vagy nem értem mit értesz nem komplett sablon alatt.

lenne sok olyan eset hogy a header footer állandó sőt az oldal egy része is csak részeket kellene bele szurkálni különböző esetekben

Akkor csinálsz egy sablont, amiben benne van az egész oldal, és csak azokat a részeket cseréled benne (valószínűleg egy vagy több másik sablonnal), amik változnak. Tudod, ez olyan mint a Matrjoska baba, ahol minden egyes komponens egy sablon, és ezen sablonok összessége adja magát az oldalt. Azaz az egyik sablonban benne van a másik sablon tartalma, amiben még egy sablon tartalma stb.
2

Bocs ha ködös az írásom.

iddqd · 2012. Jan. 26. (Cs), 18.23
Bocs ha ködös az írásom. Tehát az első kérdésem hogy van e különbség a között hogy az egyes függvényekben külön töltöm a 3 részt:
load->view('header')
load->view('home')
load->view('footer')
vagy pedig, ebben az esetben, egy darab 'home' view-et töltök egyszer ami tartalmazza a "komplett oldalt" ( headerrel footerrl meg minden félével )?
3

Összetetteb

Poetro · 2012. Jan. 26. (Cs), 18.51
Általában egy oldal azért ennél összetettebb. A fejléc is általában több részből épül fel, és illik mindegyik komponensek saját sablont csinálni. Vegyük a Weblabor-t példának. A fejléc 4 részből épül fel, ebből kettő dinamikus. Egyik a bejelentkezést mutató összetevő, a másik a menü. A menü is dinamikus, ugyanis jelzi, hogy épp melyik az aktív menüpont, valamint azt is lehet bővíteni. A bejelentkezést mutató rész szintén dinamikus, mutatja, hogy be van-e jelentkezve az illető, és ha igen, akkor van egy kilépés gomb a neve mellett, ha pedig nem, akkor linkek a belépésre illetve regisztrációra. A lábléc is épülhet föl dinamikus elemekből, és természetesen a tartalom is rengeteg elemből épül fel. Egy sablon is ennek megfelelően sok kis komponensből épül fel, amik megjelenítenek újabb sablonokat stb.

Most hirtelen csak Jade alapú sablont tudok mutatni neked, ami a következőkből épül fel:
layout.jade - a teljes HTML oldalért felelős
!!!
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/style.css')
  body!= body
index.jade - a body részért felelős
h1= title
p Welcome to #{title}

.messages
  - each val, key in flash
    ul(class='message-'+key)
      - each message in val
        li= message

div#components!= partial('blocks', {blocks: blocks})
blocks.jade - a blokkok listázásáért felelős
- Object.keys(blocks).forEach(function (name) {
div(id='block-'+name)!= partial(name, this[name]);
- }, blocks); 
login.jade - a bejelentkezési blokkért felelős
form(method='post', action='/login')
  fieldset
    legend Bejelentkezés
    .form-item
      label Felhasználó:
        input(type='text', name='username', value=name)
    .form-item
      label Jelszó:
        input(type='password', name='password', value='')
    input(type='submit')
register.jade - a regisztrációs blokkért felelős
form(method='post', action='/register')
  fieldset
    legend Regisztráció
    .form-item
      label Felhasználó:
        input(type='text', name='username', value=name)
    .form-item
      label Jelszó:
        input(type='password', name='password', value='')
    .form-item
      label Email:
        input(type='text', name='email', value=email)
    input(type='submit')
6

Ez valóban igaz az enyém is

iddqd · 2012. Jan. 26. (Cs), 19.02
Ez valóban igaz az enyém is inkább példa jellegű volt. Értelek valóban értelmét veszti a kérdésem. Nincs igazából lényege arra törekedni akkor hogy a lehető legkevesebb részből töltsem be gondolom.
4

A második: a célom az hogy

iddqd · 2012. Jan. 26. (Cs), 18.52
A második: a célom az hogy egy adott oldalon különböző menu pontok, opciók kiválasztására csak az oldal egy része változzon pl megjelenik egy form vagy más tartalom stb. Ezt jelenleg ugy képzeltem hogy paraméterként adom át a függvények hogy melyik részt kell betöltenie oda. Ez idáig rendben van de így ugye választásonként meghívódik a függvény az adott paraméterrel és betöltődik/újra töltődik a komplett oldal. A kérdésem az lenne hogy lehet e kizárólag azt az egy részt töltögetni mivel a többi rész ugyan az? köszi a választ
5

Lehet

Poetro · 2012. Jan. 26. (Cs), 18.56
Természetesen lehet az oldal csak egy részét újratölteni, de ez nem a PHP része, mivel ezt csak JavaScript-ben tudod megtenni (AJAX), vagy ne adj isten felbontod az oldaladat frame-ekre (amit semmiképp se tegyél meg, csak ha NAGYON tudod, mit csinálsz). De ekkor még bonyolultabb logikát kell bevezetned a szerver oldalon, hogy csak azt a részt szolgáld ki. Szerintem amíg tanulgatod a PHP-t, előbb az sablonozással és az MVC-vel kerülj barátságba, ha abban már profinak érzed magad, akkor érdemes majd ezzel foglalkozni.
7

igen a frame -es megoldást

iddqd · 2012. Jan. 26. (Cs), 19.04
igen a frame -es megoldást sejtettem eddig is de nem is nagyon foglalkoztam vele mivel talán az volt a legelső amit olvastam hogy kerülendő rég óta. :)
8

Köszönöm a válaszod

iddqd · 2012. Jan. 26. (Cs), 19.06
Köszönöm a válaszod
9

csak azon indultam el hogy ha

iddqd · 2012. Jan. 26. (Cs), 20.05
csak azon indultam el hogy ha lehetne fölösleges mindig betölteni minden függvényben ami valamit megjelenít mindent ami majdhogynem statikus.
11

Nem olyan fontos az...

Pepita · 2012. Jan. 29. (V), 00.01
Azért a legtöbb kliensoldalon működik a cach-elés...
Jó gondolat alapjában, amit írtál, de nincs különösebb jelentősége; a header-képek, js, css, stb. már úgyis cach-ben van, tehát nem töltődik újra.
13

Ahham ez igaz és ehhez

iddqd · 2012. Jan. 29. (V), 22.51
Ahham ez igaz és ehhez mondjuk használnék egy cach réteget mondjuk azoknak amik szinte állandók akkor már egész jól optimalizálódhatna a dolog, ha jól értem?
14

Cach

Pepita · 2012. Jan. 30. (H), 18.48
Elvileg igen. De csak nagy forgalom esetén érdemes - szerintem - cach-elni. Kis forgalomnál - persze ha nem "húszdarabos" a template - nincs jelentősége, csak sok pluszmunkát csinálsz vele magadnak, de nem fogsz látni érdemi (sebesség)eredményt belőle.
Ez csak az én véleményem, mások másképp gondolhatják...
15

Értem köszi. Igazából

iddqd · 2012. Feb. 1. (Sze), 16.41
Értem köszi. Igazából leginkább ez csak kiváncsiság volt jelenleg, erre majd visszatérek úgy is látom majd ha szükséges. 20darabosnál még nem tartok de kezdenek gyülekezni szép számmal a templatek.. :) Most egyenlőre inkább próbálom "kibogozni" a kódjaimat, gondolom hogy ez a "kezdőségemből" fakad, hogy próbálok minél több funkciót bele tömöríteni egy egy vezérlő függvényembe különféle elágaztatásokkal. De általában oda jutok, gondolom helyesen?!, hogy nincs különbség aközött ha egy utasításra egy függvény hívódik különböző esetekkel ( az utasítástól függően ) vagy pedig mindegyik a "magáét" hívja. :) Értem ez alatt, épp a tartalom kezelő részénél tartok és az admin részen beül egy editArticle függvénnyel akartam elvégeztetni, hogy alapértelmezetten mit adjon ha rákattintok erre a szekcióra, azon belűl ha újat akarok adjon egy formot ha edit elni akkor adja a formot benne az adatokkal stb... de feleslegesnek érzem, ha nincs semmi különbség, lesz külön egy delete, edit, new stb függvény. Igy is ugy is egy egy függvény futás mindegyik esetben, nem spórolok semmit.
16

Template-ek

Pepita · 2012. Feb. 3. (P), 15.57
kezdenek gyülekezni szép számmal a templatek
Ezzel azért vigyázz, mármint: lehetőség szerint minél kevesebb view-hívással célszerű megjeleníteni a tartalmat. Itt van nagy szükség a "rafinériára", és érdemes is spórolni. Az nem feltétlenül baj, hogy pl. minden lapnak más-más "header.php"-je van, de ha ez így van, akkor teljesen felesleges külön view-ként hívni, bele kell tenni az oldalba (fájlba) a header-t is. És ha - mondjuk - két side-box van, azt is nézni kell, hogy be lehet-e azokat egyetlen "sides.php"-be tenni.
...nincs különbség aközött ha egy utasításra egy függvény hívódik...
Attól függ.
Szerintem leginkább akkor van értelme az egyfüggvényes megoldásnak, ha nem elágaztatni kell "belül", hanem a paraméterként kapott adat(ok) feldolgozása miatt kerülnek ki belőle különböző kimenetek. Nem tudom konkrétan a függvényhívás és a feltételkiértékelés végrehajtási idejét, de - gondolom - nem számottevő a különbség. Viszont jobban átlátható a kódod, ha egy fv. egy dolgot csinál, nem akárhányat. Ezen kívül híváskor (tudtommal) az egész fv. memóriába kerül, tehát a "nem végrehajtandó" részek is. A példádat nemigazán értem, de
ha újat akarok adjon egy formot ha edit elni akkor adja a formot benne az adatokkal stb...
ha ez ugyanazt a formot jelenti (adatokkal vagy anélkül), akkor jó nyomon jársz, és ezt jobb egy controllerben kezelni.

Melyik fw?
17

Na igen pont erre voltam

iddqd · 2012. Feb. 7. (K), 17.50
Na igen pont erre voltam kíváncsi, közben ezzel a szemlélettel indultam is tovább és amit lehet azt egyben hagyok. Esetemben, épp az ellenkezője a header szinte állandó (egyenlőre), de értem az elvet amire gondolsz, amik "összetartoznak", fölösleges 2 részletben betölteni tiszta sor.
Az fv. rendezésével is birkózok, de gondolom ez idővel "rutinosabbá" válik.
Melyik fw?

Először egy sajátot írtam egy nagyon kezdetlegeset, inkább csak azért hogy jobban átlássam, aztán hagytam minek találjam fel újra a kereket elven és most Codeigniter lett a szerencsés szimpatikus és jól dokumentált.
18

Egy cipő...

Pepita · 2012. Feb. 8. (Sze), 21.32
Akkor egy cipőben járunk!
Szintén CI-t preferálom jelenleg, nekem is tetszik. Viszonylag kevés cucca van (=kicsi), jól érthető, jó doksival; és - nem utolsó sorban - korábbi osztályaimaból, különálló kis progikból néhány perc alatt csinálok helper-t, stb.
A saját rendszert későbbre hagytam, mert egy embernek túl sok (hosszú) munka egy jót írni, ill. nem biztos, hogy az a jó megoldás.

Amire érdemes figyelni: ha olyan osztályt, stb. használsz, ami csaknem minden oldallekéréshez kell, akkor azt érdemes autoload-dal betölteni, a többit meg csak ott, ahol kell. A helper-ek közül nekem már több is volt, ami helyett inkább másikat (vagy át-) írtam.
19

Egyetértek

iddqd · 2012. Feb. 10. (P), 16.57
Igen az autoload-ra gondoltam de még nem túl nagy a rendszerecske később átnézem hogy mit is lenne érdemes. Egy kérdés: hogyan tudnék ftp parancsokat használni localhoston?? tehát azon dolgozok épp hogy az "admin" részemen van egy form, ahol egyrészt adatokat név,cím stb stb + képeket hozzájuk lehet(/ne) feltölteni. Azt szeretném hogy elküldéskor, az adatok mentése ill a képek mentése előtt készítsen egy mappát az imagesbe a megadott névvel és a képet majd oda mentse. De ezt localhost-on az ftp->mkdir() el nem nagyon tudom elérni hisz nem tudok connectelni.
Van erre vmi megoldás?
20

nem kell ftp

Poetro · 2012. Feb. 10. (P), 17.29
Ehhez nem kell ftp, keress rá: php upload file
21

Elhamarkodott kérdés volt

iddqd · 2012. Feb. 10. (P), 17.31
Közben már rájöttem, persze az ftp osztály kihagyásával:

$newDir=$this->input->post('title');
mkdir(FCPATH."/images/".$newDir);
csak ez így értelmét veszti ha élesedik az oldal.
22

az upload-ot használom ill

iddqd · 2012. Feb. 10. (P), 17.36
az upload-ot használom ill használni fogom, most a mappa volt a lényeg, és már így próbáltam de valamiért nem ment.
23

base_url

Pepita · 2012. Feb. 12. (V), 18.10
A linkekhez, css-hez stb. használhatod a base_url() függvényt, a könyvtárakhoz simán a './images/te_könyvtárad_neve/', ha nem akarod bonyolítani. Egyszerű képfeltöltéshez jó az Upload library, de ha nem letiltani akarod pl. a túl nagy (pixel)méretű kép feltöltését, hanem átméretezni, akkor szükséged lesz az Image_lib-re is.

Ezekhez a fel-le-töltésekhez nem kell ftp.

Szerk.: Ha a localhost windowsos, akkor az FCPATH backslash-ekkel adja a fő könyvtárat, de mivel a teljes elérési út van benne, amúgy sem biztos, hogy jó azt használni.
10

vess egy pillantást a

Kubi · 2012. Jan. 27. (P), 12.51
vess egy pillantást a twig-re, http://twig.sensiolabs.org/
ha nem is használd majd a projektedben, de ha elolvasod lesz egy kis rálátásod, hogy hogyan csinálják ezt mások, így meríthetsz belőle ötletet.

Most az, hogy a twig-nek saját nyelvezete van a php felett, egy dolog, ennek is megvan az előnye (sandbox mód, user szerkesztheti a sablont, de csak ahoz fér hozzá amihez akarod, hogy hozzáférjen).
12

Alapból minden PHP fájl

tgr · 2012. Jan. 29. (V), 14.04
Alapból minden PHP fájl betöltése +1 diszk elérés, tehát igen, beleszámít a sebességbe, hány fájlt használsz, de ha kicsi az oldalad forgalma, akkor olyan mindegy, ha nagy, akkor meg úgysem úszod meg valamilyen cache réteg nélkül, és ha olyat használsz, akkor már nem számít.