包含foreach用户的文件/模板

时间:2013-06-01 18:02:45

标签: php templates variables include

我正在尝试为每个用户加载“模板”文件。

为每个用户加载文件,因此,如果我有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>

2 个答案:

答案 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');
}