2012-09-03 48 views
4

目前我处于模板中,需要{php}从模型/数据库中读取某些内容。这现在应该是当前模板中的一个新的smarty变量。我该如何解决这个问题?在{php}中为smarty指定新变量

例如为:

{php} 
    $var["newSmartyVar"] = model_gimme_data(); 
    $currentTemplate->assign($var); 
{/php} 

The value is {$newSmartyVar} ! 

这里有什么正确的代码?

(怡,罕见的,而不是抽象的,但只需要快速原型的代码会在控制器后面。)

+0

嗯......不知道在这种情况下{capture}是否有帮助。 – Napolux

+0

不要在模板内调用模型方法。在外部调用它,在一些PHP文件中并将变量分配给模板。但是,无论如何,我认为,而不是'$ currentTemplate'你应该写'$ this'并且它会工作 – Serjio

+0

我不能相信新的帖子如何被接受,而第一个正确的帖子被忽略。你应该公平行事。 – Gustonez

回答

2

$this指当前smarty实例:

{php} 
$this->assign('foo', 'bar'); 
{/php} 
{$foo} 

但是,您应该oid {php}就像瘟疫一样。使用{php}是缺少抽象的迹象。你可以考虑创建一个函数插件。

+0

哦,它在对象本身 - 很好!就是这样,谢谢! Yee,它缺乏抽象,但我以某种方式为客户创建了我的问题原型,并等待项目负责人从假期回来,让我在这个非常混乱的代码中找到合适的位置;) – LeMike

0
{php} 
global $currentTemplate; 
$var = model_gimme_data(); 
$currentTemplate->assign('newSmartyVar',$var); 
{/php} 

从模型中得到的东西:

{php} 
global $currentTemplate; 
$this->_tpl_vars['variableName']; 
{/php} 
+0

哦...'全球'里面的模板它很有趣=) – Serjio