smarty şablonları bir nesne atamak nasıl?

3 Cevap php

i PHP bir model nesnesi yarattı

class User {
  public $title;

  public function changeTitle($newTitle){
    $this->title = $newTitle; 
  }
}

Nasıl ben sadece nesnesini atayarak smarty bir Kullanıcı nesnesinin özelliğini gösteririm?

Ben bunu biliyorum

$smarty->assign('title', $user->title);

ama benim nesne üzerinde 20 artı özellikleri gibi bir şey vardır.

Bildiriniz.

EDIT 1

şu benim için işe yaramadı.

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

VEYA

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

sonra i {$user->title} deneyin

bir şey çıktı.

EDIT 2

Ben sadece şu anda çıkış smarty şablonu nesnenin ortak özelliği çalışıyorum. Maalesef ben fonksiyonu ile herhangi bir karıştı eğer.

Teşekkür ederim.

3 Cevap

Bu benim için çalışıyor.

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

// Inside the template. note the lack of a $ sign
{user->title}

Bu bir i $ işareti var bakılmaksızın çalışmıyor

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

Birisi bana neden söyleyebilirim umuyoruz.

Bir Smarty şablondan bir nesnenin herhangi bir kamu özelliklerine erişmek mümkün olmalıdır. Örneğin:

$o2= new stdclass;
$o2->myvar= 'abc';
$smarty->assign('o2', $o2);

### later on, in a Smarty template file ###

{$o2->myvar}  ### This will output the string 'abc'

Ayrıca kullanmak assign_by_ref Eğer Smarty şablona atadıktan sonra nesneyi güncellenmesi planlıyorsanız yapabilirsiniz:

class User2 {
  public $title;
  public function changeTitle($newTitle){
    $this->title = $newTitle; 
  }
}
$user2= new User2();
$smarty->assign_by_ref('user2', $user2);
$user2->changeTitle('title #2');

Ve şablon dosyasında

{$user2->title}  ## Outputs the string 'title #2'
$smarty->assign('user', $user);

Şablonda

{$user->title}