0

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

该文件为每个用户加载,所以如果我有 2 个用户,它会加载两次,但变量$user['profileimg']$user['name']不会。

我不知道为什么这不起作用,而且我觉得这可能是一种不好的做法。所以我的问题是:我如何让它工作/我应该如何做这样的事情。

提前感谢您提供的任何帮助。

这是我现在得到的代码:

班级 :

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

页面.php

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

用户列表模板.php:

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

2 回答 2

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';
    } 
}

页面.php

foreach($Users->getAll() as $user)
{
   Cprint::Template('userlist_template', $user);
}
于 2013-06-01T18:09:58.590 回答
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');
}
于 2013-06-01T18:10:22.093 回答