2013-06-01 108 views
0

我試圖爲每個用戶加載一個「模板」文件。包含文件/模板每個用戶

文件加載每個用戶,所以如果我有2個用戶,它加載它的兩倍,但變量$用戶[「profileimg」]$用戶[「名」]沒有。

我沒有idé爲什麼這不起作用,我也有一種感覺,這可能是一個不好的做法。所以我的問題是:我如何得到這個工作/我應該如何做這樣的事情。

Thx提前爲您提供任何幫助。

這是代碼Ive得到了現在:

類:

class Cprint 
{ 
    public static function Template($name, $path = 'template') 
    { 
     include ROOT_DIR . '/' . $path . '/' . $name . '.php'; 
    } 
} 

page.php文件

foreach($Users->getAll() as $user) 
{ 
    Cprint::Template('userlist_template'); 
} 

userlist_template.php:

<div class="userholder"> 
    <img class="profileimg" src="<?php echo $user['profileimg'] ?>"/> 
    <p><?php echo $user['name'] ?></p> 
</div> 
+0

'$用戶[ 'profileimg']和$用戶[ '名']確實not.'不是什麼? –

+0

如果我檢查html它應該是

用戶名

但它是

objectnabb

+0

爲什麼你爲每個用戶加載一個模板?我認爲你想要做的是加載一個模板,每個用戶看起來不同。 – bestprogrammerintheworld

回答

0

它是因爲foreach循環不會將$ user數據傳輸到模板。

您需要到$用戶數據傳遞到模板的方法:

更好地說明,Template需要一個額外的參數($用戶)的靜態方法。然後Cprint::Template()方法需要這樣做include變量到$user數組傳遞到Template()方法作爲第二個參數

class Cprint 
{ 
    public static function Template($name, $path = 'template', $user= array()) 
    { 
     include ROOT_DIR . '/' . $path . '/' . $name . '.php'; 
    } 
} 

page.php文件

foreach($Users->getAll() as $user) 
{ 
    Cprint::Template('userlist_template', $user); 
} 
+0

這工作thx,是否有我的方式我不必在類中指定$用戶,所以我可以使用它在其他的東西呢? – objectnabb

+0

我不這麼認爲,我的建議是將方法聲明中的'$ user = array()'更改爲'$ data = array()',然後在'userlist_template.php'文件中,將您的變量名稱從'$ user'到'$ data'。這個,至少可以讓你傳遞任何數據到'Template()'方法 –

+0

好的謝謝!是否有更好的方法來做到這一點? – objectnabb

0

所包含的腳本可以參考其名爲

的範圍

因此,由於您在Cprint的靜態函數內調用它,因此只能看到該函數範圍內的變量。

你需要做的是通過用戶

public static function Template($user,$name, $path = 'template') 
{ 
    include ROOT_DIR . '/' . $path . '/' . $name . '.php'; 
} 

,並適當地調用它

foreach($Users->getAll() as $user) 
{ 
    Cprint::Template($user,'userlist_template'); 
} 
相關問題