Передать объект php в smarty - PullRequest
       26

Передать объект php в smarty

2 голосов
/ 29 января 2010

У меня проблема с передачей объекта в тег 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 = 'mada@yahoo.com';
 public $phone = 123456;
}

Ответы [ 2 ]

1 голос
/ 01 февраля 2010

Используйте

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

Это позволит вам получить доступ так, как вы ожидаете.

Использование register_object () также является опцией и позволяет вам ограничить то, что можно использовать из шаблона, но это означает другой формат шаблона (без начальных $).

0 голосов
/ 01 февраля 2010

При этом должно работать

$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);
...