将php对象传递给smarty

时间:2010-01-29 12:06:49

标签: php smarty

我将对象传递给smarty标签时遇到问题。我有以下代码:

$contact = new Contacts;
$smarty = new Smarty;
$smarty->assign('contact',$contact);

在test.htpl中:

<html>
<head>
    <title>{$title}</title>
</head>
<body>
    id: {$contact->id} <br/>
    name: {$contact->name} <br/>
    email: {$contact->email} <br/>
    phone: {$contact->phone} <br/>
</body>
</html>

这会导致无效字符'&gt;'的警告。我怎么解决这个问题?

我用这个类进行测试:

class Contacts
{
 public $id = 1;
 public $name = 'Mada';
 public $email = 'mada@yahoo.com';
 public $phone = 123456;
}

2 个答案:

答案 0 :(得分:1)

使用

$smarty->assign_by_ref('contact',$contact);

这将允许您以您期望的方式访问。

使用register_object()也是一个选项,允许您限制模板中可以使用的内容,但这意味着不同的模板格式(没有初始$)。

答案 1 :(得分:0)

通过以下操作应该工作

$smarty->register_object('contact',$contact);

然后以这种方式调用

<html>
<head>
    <title>{$title}</title>
</head>
<body>
    id: {$contact->id} <br/>
    name: {$contact->name} <br/>
    email: {$contact->email} <br/>
    phone: {$contact->phone} <br/>
</body>
</html>

此外,您不需要调用此方法

$smarty->assign('contact',$contact);