所以我使用的是一个自定义的PHP会话处理程序(如果你熟悉框架,那么它就像Laravel中的那个一样),它没有注册到$_SESSION
超全局,所以我可以'使用{$smarty.session.some_data}
来访问它。
但是,在我的Smarty模板中,我仍然希望检索存储在会话中的值,而无需一直手动将值分配给Smarty变量。创建访问会话数据的方法的最佳方法是什么?
提前致谢!
答案 0 :(得分:1)
可能没有办法使用语法$smarty.yourarray.data
,但这种语法用于全局数组($ _POST,$ _GET,$ _SESSION,$ _COOKIE,$ _SERVER)。
但是,您可以使用与PHP相同的方法访问静态类。
假设您在PHP文件中有以下类:
class Session
{
public static function get($data) {
if (is_int($data)) {
return $data * 3;
}
return $data;
}
}
现在,你不需要为Smarty分配任何东西。
当您在Smarty文件中想要访问此类方法时,您只需使用:
{Session::get('something')}<br />
{Session::get(2)}
你会得到结果:
something
6
正如所料。
所以你不必做任何事来访问这个课程(没有修饰语/功能,你甚至不需要分配这个课程。)
但是,假设您在命名空间中使用了Session类:
<?php
//session.php
namespace MySession;
class Session
{
public static function get($data) {
if (is_int($data)) {
return $data * 3;
}
return $data;
}
}
如果你想在Smarty里面这个静态类,你需要注册你的课程:
require ('session.php');
$smarty->registerClass('Session', 'MySession\Session');
使它工作(据我所知,你不能在TPL文件中使用命名空间。)