$datasession = array(
'nick' => $sess_nick,
'login_ok' => true
);
$this->session->set_userdata($datasession);
redirect('app'); //app is a controller that render the template view.
然后,问题是:如何从树枝模板中获取这些变量?我尝试使用:
{{ session.userdata.nick }}
但它显示为空字符串。
先谢谢。
答案 0 :(得分:0)
要在树枝模板上添加会话变量,您必须在Twig库或控制器中添加以下行。
$datasession = array(
'nick' => $sess_nick,
'login_ok' => true
);
$this->session->set_userdata($datasession);
$this->_twig->addGlobal("session", $this->CI->session);
然后在您的树枝模板上,您可以像这样打印会话
{{ session.userdata.nick }}
由于在CodeIgniter中,用户存储的会话通常位于userdata数组中。否则,您只需调用会话变量并命名
即可{{ session.nick }}
Src:http://llanalewis.blogspot.co.uk/2013/08/codeigniter-add-session-in-twig.html
答案 1 :(得分:0)
好的,感谢Latheesan Kanes的帮助。这对你的指导非常有帮助。我想分享一下我解决这个问题的方法。
正如Latheesan所说,我们必须使用addGlobal()方法(我在我的Twig库文件夹中添加了这个方法)
如下:
$this->_twig->addGlobal("session", $this->CI->session);
但是在加载Session库之前不要忘记。这样。
$this->CI->load->library('session');
通过这种方式,您可以在所有树枝视图中全局使用会话。
答案 2 :(得分:0)
我正在使用CodeIgniter 3RC3和Twig-Codeigniter library(感谢Erik& Bennet!)。
为了在twig中启用简单的会话访问,我在/application/libraries/Twig.php文件中添加了一行__construct()方法:
public function __construct()
{
$this->_ci = & get_instance();
$this->_ci->config->load(self::TWIG_CONFIG_FILE); // load config file
// set include path for twig
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'third_party/Twig/lib/Twig');
require_once (string)'Autoloader.php';
// register autoloader
Twig_Autoloader::register();
log_message('debug', 'twig autoloader loaded');
// init paths
$this->template_dir = $this->_ci->config->item('template_dir');
$this->cache_dir = $this->_ci->config->item('cache_dir');
// load environment
$loader = new Twig_Loader_Filesystem($this->template_dir, $this->cache_dir);
$this->_twig_env = new Twig_Environment($loader, array(
'cache' => $this->cache_dir,
'auto_reload' => TRUE));
// ADD SESSION TO TWIG - JZ
$this->_twig_env->addGlobal('session', $this->_ci->session);
// SESSION IS NOW AVAILABLE IN TWIG TEMPLATES!
$this->ci_function_init();
}
现在我们将会话加载到我们的twig实例中,我们在twig模板中访问会话变量(例如CI userdata),如下所示:
<span>__ci_last_regenerate: {{ session.userdata.__ci_last_regenerate }}</span>
答案 3 :(得分:0)
我使用以下代码在Twig中成功使用了会话变量:
在控制器中:
$datasession = array(
'language' => "PHP",
'framework' => "CodeIgniter"
);
$this->session->set_userdata($datasession);
$this->twig->addGlobal("session", $this->session);
在模板中:
{{ session.language }}
{{ session.framework }}