我正在尝试为每个用户加载“模板”文件。
为每个用户加载文件,因此,如果我有2个用户,则会加载两次,但变量 $ user ['profileimg'] 和 $ user ['name'] 没有。
我不知道为什么这不起作用,而且我也觉得这可能是一种不好的做法。所以我的问题是:我如何让这个工作/我该怎么做这样的事情。
提前获取您可以提供的任何帮助。
这是我现在的代码:
上课:
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 :(得分:0)
因为foreach循环不会将$ user数据传输到模板。
您需要将$ user数据传递给模板方法:
为了更好地解释,静态方法Template
需要一个额外的参数($ users)。然后,Cprint::Template()
方法需要将$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);
}
答案 1 :(得分:0)
当您执行include
时,包含的脚本看到的变量与其调用的范围相关
所以既然你在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');
}