2012-03-09 33 views
1

比方说,我有以下内容的Smarty的模板文件:Smarty:有没有办法检测是否所有预期的变量都传递给了模板?

<div> 
     var 1: {$var1}<br> 
     var 2: {$var2} 
</div> 

和我做了以下任务,我忘了分配VAR2:

$smarty->assign("var1", "foo"); 
$smarty->display($tpl_file); 

什么是检测的最佳方式并非所有要求的变量 都被分配了?

谢谢。

+0

的部分代码丢失,你实际上是(想到)检测到。 – hakre 2012-03-09 00:16:04

+0

该代码是什么? – Pierre 2012-03-09 00:17:26

+0

这样做:知道需要哪些变量,检查是否有任何变量已被分配。另请参见[如何检查是否已分配Smarty变量?](http://stackoverflow.com/questions/350129/how-do-i-check-to-see-if-a-smarty-变量已经分配) – hakre 2012-03-09 00:20:10

回答

1

Smarty的本身不具备这样的功能,你可以试着写一些自己喜欢:

preg_match_all('/{\$(.*?)}/', file_get_contents('templates/index.tpl'), $vars, 2); 

foreach ($vars as $v) 
{ 
    echo $v[1]."<br>"; 
} 

从这里摘自:http://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions#project-10

+1

我将正则表达式更改为'/ {\ $([a-zA-Z0-9 _] +)/'来处理像{$ var:htmlescape}这样的情况,但对我而言 – Pierre 2012-03-09 00:45:48

相关问题