我目前在使用.tpl智能模板类的PHP代码块中设置cookie时遇到问题 .
在.tpl类我有一些喜欢:
{php} setcookie("school", "test"); {/php} School: { $smarty.cookies.school }
但是这不打印任何东西 . 我知道php setcookie调用只在一个.php文件中工作,因为我已经测试过了,但无法让它与php代码片段在.tpl类中工作 .
任何建议得到赞赏,D
{php} setcookie("school", "test"); $_COOKIE['school'] = 'test'; {/php}
这是因为$ _COOKIE superglobal仅在页面刷新时更新,而不是在使用 setcookie() 之后
setcookie()
确保您使用 SmartyBC.class.php 而不是 Smarty.class.php 因为 {php}{/php} 将无法使用Smarty.class.php .
SmartyBC.class.php
Smarty.class.php
{php}{/php}
还记得将 $php_handling 属性设置为SMARTY_PHP_ALLOW .
$php_handling
更多信息http://www.smarty.net/docsv2/en/variable.php.handling.tpl
我没有将嵌入式PHP代码放入我的模板中,而是创建了一个智能的自定义函数插件,在调用时允许我设置cookie .
关于自定义函数的详细信息:http://www.smarty.net/docsv2/en/plugins.functions.tpl Peter向我指出了这样做的想法 .
但是,我仍然有点好奇如何在模板代码中对嵌入式php进行此操作,即使它不是一个好的做法 .
2 回答
这是因为$ _COOKIE superglobal仅在页面刷新时更新,而不是在使用
setcookie()
之后确保您使用
SmartyBC.class.php
而不是Smarty.class.php
因为{php}{/php}
将无法使用Smarty.class.php .还记得将
$php_handling
属性设置为SMARTY_PHP_ALLOW .更多信息http://www.smarty.net/docsv2/en/variable.php.handling.tpl
我没有将嵌入式PHP代码放入我的模板中,而是创建了一个智能的自定义函数插件,在调用时允许我设置cookie .
关于自定义函数的详细信息:http://www.smarty.net/docsv2/en/plugins.functions.tpl Peter向我指出了这样做的想法 .
但是,我仍然有点好奇如何在模板代码中对嵌入式php进行此操作,即使它不是一个好的做法 .