Pokusavam da napravim klasu da pozivanje templatea da odvojim php od html, medjutim nailazim na jedan problem klasa loada html template ali nece da mi prikazuje varijable iz php-a u html-u
Ovako to izgleda imam folder “templates” tu se nalazi naprimjer contact.html, u root folderu imam contact.php
Sve ide preko index.php
Evo kod da vidite index.php
<?php
error_reporting(E_ALL);
/**
* class that loads html template into php file
*/
class loadTemp
{
function load_template($template, $ext='html', $calledfrom='root')
{
$templatefolder = 'templates';
if ($calledfrom=='root')
{
return str_replace("\"", "\\\"", file_get_contents($templatefolder.'/'.$template.'.'.$ext));
}
}
}
$html = new loadTemp();
?>
<!DOCTPYE html>
<html lang="en">
<head>
<title></title>
<head/>
<body>
<h1>Header</h1>
<hr />
<div id="nav">
<a href="index.php">Home</a> |
<a href="index.php?page=contact">Contact</a>
</div>
<hr />
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'].'.php';
if(file_exists($page)) {
include $page;
} else { echo '<p>That page doesn\'exists.</p>'; }
} else { include 'home.php'; }
?>
<hr />
<div id="footer">
<p>© 2015 Site name</p>
</div>
</body>
</html>
ovo je contact.php u root folderu
<?php
$broj = '10';
// pozovi template
$contact = $html->load_template('contact');
echo $contact;
?>
i ovo je contact.html u templates folderu
<h1>Contact</h1>
$broj
E sad me zanima kako da ova varijabla $broj prikaze 10 iz contact.php-a. Znaci pravim formu samo u html-u a u php-u je samo radnja, i molim vas nemojte mi o template enginima jer sam probo skoro sve i odvratni su a nisam jos tolko iskusan da radim OOP i u nekom frameworku. Samo zelim rjesenje ove solucije ako postoji i da radi na trenutnoj verziji php-a +.
napravi da ti taj template inkluda sa require ili include funkcijom ili ovaj rezultat sto si dobio sa file_get_contents provuci kroz eval funkciju
ognjen
veljača 2015 09:34 28
3
Recimo mozes ovako:
index.php:
<?php
error_reporting(E_ALL);
/**
* class that loads html template into php file
*/
class loadTemp
{
private $variables=[];
function set_var($name, $value)
{
$this->variables[$name] = $value;
}
function load_template($template, $ext='html', $calledfrom='root')
{
$templatefolder = 'templates';
if ($calledfrom=='root')
{
extract($this->variables);
ob_start();
include $templatefolder.'/'.$template.'.'.$ext;
return ob_get_clean();
}
}
}
$html = new loadTemp();
$broj = '10';
$html->set_var('broj', $broj);
// pozovi template
$contact = $html->load_template('contact', 'php');
echo $contact;
?>
contact.php:
<h1>Contact</h1>
<?php
echo $broj;
?>
Rjeseno evo koda ako kome bude posluzio
funkcija za pozivanje template-a iz foldera templates/
function load_template($template, $ext='html', $calledfrom='root')
{
$templatefolder = 'templates'; // folder gdje se nalaze html datoteke
if ($calledfrom=='root')
{
return str_replace("\"", "\\\"", (file_get_contents($templatefolder.'/'.$template.'.'.$ext));
}
}
I sad u php-u npr za prikaz profila korisnika “profile.php” iz root foldera
<?php
$user_data = $users->get_user_data();
$ime = $user_data['ime'];
// pozovi template
eval("\$profile = \"".load_template("profile")."\";");
echo $profile;
?>
Sada napravite profile.html u templates folderu i napravite izgled prikaza profila i samo dodate npr
<div>
Name : $ime
</div>
I to je to prikazuje vam ime korisnika i ostale varijable koje postavite. Eto ako ce nekome pomoci.
Napomena ovo je testirano samo ako koristite file da pozivate stranicu preko url-a ovako index.php?stranica=profile&id=2
ovo stranica nije bitno ni id moze se svati kako hocete samo isprobajte
Ako imam array, kako nesto ucinit sa njim, recimo ispisati svaki clan arraya?
foreach petljom:
foreach($your_array as $key=>$value) {
echo 'index is '.$key.' and value is '.$value;
}
Samo u php datoteci postavis array npr $slike = array(1,2,3,4,5,6,7,8); i onda u html datoteci si napravis foreach petlju da izvuces podatke iz nje.
profile.php sam napravio:
<?php
$user_data = $users->get_user_data();
$your_array = array('jedan'=>1, 'dva'=>2);
$ime = $user_data['ime'];
// pozovi template
eval("\$profile = \"".load_template("profile")."\";");
echo $profile;
?>
profile.html:
<div>
Name : $ime
</div>
foreach($your_array as $key=>$value) {
echo 'index is '.$key.' and value is '.$value;
}
I nece da mi radi.
Fale ti php tagovi kad radis foreach petlju trebas php tagove znaci ovako
<div>
Name : $ime
</div>
<?php
foreach($your_array as $key=>$value) {
echo 'index is '.$key.' and value is '.$value;
}
?>
To takodjer ne radi.
Jel tebi radi?
Radi ( jebem ti 20 znakova ) .