Jump to content
php.lv forumi

Include iekš .tpl faila


mypoint

Recommended Posts

Леший, tas, ka PHP var izmantot daudz sarežģītākām lietām, kā vienkāršu templeitu būvēšanai, nenozīmē, ka PHP nevar būt templeitu valoda.

Respektīvi, tas ir definīcijas jautājums, kā mēs definējam, kas ir templeitu valoda. Un parasti mēs definēsim tā, ka būs kaut kāda kopa ar lietām, ko šijā valodā jāvar veikt, bet diez vai mēs definīcijā iekļausim arī aizliedzošos elementus, kas noteiks, ja valoda var veikt to un to, tad viņa nav templeitu valoda.

Būtībā mēs tagad strīdamies, nevis par PHP, bet par templeitu valodas definīciju, jo pamatā PHP var veikt visas templeitu valodai nepieciešamās darbības, tikaia r to atšķirību no citām templeitu valodām, ka PHP spēj arī vēl ko citu.

Edited by codez
Link to comment
Share on other sites

Kaada starpiiba shiem diviem?

 

Nr.1

<!-- item_list.tpl -->
[if not empty {items}]
 <ul>
   [foreach {items} as {item}]
     <li>{item}</li>
   [endforeach]
 </ul>
[endif]

 

Nr.1

<!-- item_list.php (ekstensija nav svariiga buutiibaa) -->
<?php if(!empty($items)) : ?>
 <ul>
   <?php foreach($items as $item) : ?>
     <li><?php echo $item; ?></li>
   <?php endforeach; ?>
 </ul>
<?php endif; ?>

 

Skatoties rezultaatu - nekaada.

Skatoties uz aatrdarbiibu - otraa buus aatraaka.

+ otrai nevajag maaciities papildus sintaksi klaat

+ otrai pienjemot ka short tags vienmeer ir ON, to var veel saiisinaat

 

_____

 

 

MVC var realizeet gan izmantojot atsevishkju template valodu, gan neizmantojot (izmantojot php kaa template engine). Atsevishkja template engine izmantoshana jau nenoteiks, ka vot tagad tas ir MVC.

Link to comment
Share on other sites

rATRIJS, ja tev tas item_list.php (var likt tpl, vai jebkādu citu extension) ir atsevišķs fails un tiek inkludots ar kontrolleru procesā, tad tas ir pilnvētrīgs šablons (template), jo šaj gadījumā, V daļa ir atdalīta. Ja tas ir iekš index.php, kaut kur 1439 rindā, tad tas ir līki, un galīgi nav pēc MVC principiem.

Par atsevišķas template valodas izmantošanu - gaumes jautājums. Prātīgāk, protams, izmantot PHP.

codez, tev piekritīšu, kaut gan, jēdziens "template valoda" priekš manis ir miglains. Dajebkura normāla programmēšanas valoda (pie kuras, cerams, var pieskaitīt PHP) lieliski tiek galā ar failu atvēršanu, string operācijam un buferizēto outputu. Nedomāju, ka valodas, kuras, ar šo tiek galā, ir jāsauc par template valodam.

Link to comment
Share on other sites

Леший, ja Tu PATS neproti nodalīt loģiku un attēlošanas un TEV tādai lietai VAJADZĪGS papildus layeris, par ko tad mēs te runājam?

 

Lūk 300 nevajadzīgas rindiņas:

$template->load_file("blablalba.tpl");
$template->set_var("a", $a);
$template->set_var("b", $b);
$template->set_var("c", $c);
$template->set_var("d", $d);
$template->enable_block("some_hidden_block");

 

Skat:

$data_manipulation_code();
include("templates/view.php");

 

Viss.

 

Nekādas datubāzes, nekādas biznesa loģikas vissam, kas atrodas zem templates/*. Tikai plika datu attēlošana.

Edited by marrtins
Link to comment
Share on other sites

<?php echo "Hello world!"; ?>

caur CLI, tu to uzrakstu redzēsi. Web interfeiss vispār netiek aiztikts. .......

 

HTML arī nevar nosaukt par templeita valodu, jo "pēc savas dzīļākās būtības" HTML ir Markup valoda hipertekstam, un .html faili reprezentē veselas lapas. Templeiti ir teiksim daļa no txt, html, xml vai cita formata faila, ko tu ar skripta palīdzību liec tur, kur vajag.

A? ko Es saku?

HTML -> NAV valoda kaa suga.. tas ir tikai teksta Markups( birkas) un nekas vairak...

PHP peec butibas negenere nakadu 'haideri' prieksh 'klienta', ja vien tas netiek ieprieksh pieprasiits...

to jau vajadzeja zinat. (kapec brinies? ) [ teiksim izpildas komanda prieksh DB, un outputs var arii nebuut]

Haideri generee dotais webServeris ...

Леший ->Vai tiesam shadas lietas nezinaji ??

P.S. lasot tavus ieprieksejos postus, biju par tevi citas domas :(

Link to comment
Share on other sites

PHP peec butibas negenere nakadu 'haideri' prieksh 'klienta', ja vien tas netiek ieprieksh pieprasiits...

to jau vajadzeja zinat. (kapec brinies? ) [ teiksim izpildas komanda prieksh DB, un outputs var arii nebuut]

Haideri generee dotais webServeris ...

Baigu Ameriku atklāji. Jebkam, kas ģenerē HTML output no servera, ir jānosūt headeru Content-type: text/html\n\n. HTML failu gadījumā tas notiek automātiski, un PHP ir nekas cits, ka HTML (jeb cita kontenta, ar attiecīgo headeru, protams) preprocessors, gadījumā, ja tiek izsaukts caur web interfeisu. Palaižot caur CLI, header netiek sūtīts.

Tikai nesaprotu, ko tu gribēji ar šo pierādīt. Kāds sakars headeriem ar template valodam (joprojam neesmu dzirdējis no tevis definīciju template valodai)?

Edited by Леший
Link to comment
Share on other sites

OMG, es pakritu zem galda... :O Kas te pa murgiem vispār panesās?

 

"Jebkam, kas ģenerē HTML output no servera, ir jānosūt headeru Content-type: text/html\n\n"

Viens var ģenerēt contentu, otrs var sūtīt headerus. Piemēram: viens=PHP, otrs=Apache.

 

"Palaižot caur CLI, header netiek sūtīts."

Āāāāāāāāāāāāā. Kā saprogrammē, tā sūta vai nesūta.

 

Kods (pseido):

$f=fopen("http://www.tvnet.lv/", "w");
...
fputs("$f, Host: www.tvnet.lv");

Reku arī no konsoles headeris tika aizsūtīts. Wow.

 

Kas ir templešu valoda, skat. Smarty (bezjēdzīgākais un dauniskākais produkts kas vien atrodams zem *.php.net).

Edited by marrtins
Link to comment
Share on other sites

marrtins, ka smartiju var saukt par valodu? Tā ir template sistēma uz PHP bāzes.

Un tavs megakods

$f=fopen("http://www.tvnet.lv/", "w");
...
fputs("$f, Host: www.tvnet.lv");

Es biju runājis par banālo outputu (echo "Hello, I'm not a header!";), kad netiek mainīti nekādi headeri.

Viens var ģenerēt contentu, otrs var sūtīt headerus. Piemēram: viens=PHP, otrs=Apache.

Es biju domājis, tiesi outputa ģenerāciju, nevis HTML preprocessing. Ar outputa ģenerāciju nodarbojās Apache. Ja tu naīvi uzskati, ka Apache vienkārši sūta plain htmlu as is un neko citu, tad tu maldies.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...