2010-01-29 115 views
2

我有一个将对象传递给smarty标签的问题。我有以下代码:将php对象传递给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> 

这导致无效字符的警告 '>'。我该如何解决这个问题?

我用这个类来进行测试:

class Contacts 
{ 
public $id = 1; 
public $name = 'Mada'; 
public $email = '[email protected]'; 
public $phone = 123456; 
} 
+0

你能向我们展示我们在联系人类中的什么吗? – RJD22 2010-01-29 12:08:33

+0

谷歌搜索“聪明的模板对象”导致http://www.smarty.net/manual/en/advanced.features.php成为第一个结果。 – zneak 2010-01-29 12:23:13

回答

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> 

还那么你不” t需要调用此方法

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

使用

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

这将允许你在你所期望的方式访问。

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