2013-06-01 88 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'); 
} 
相关问题