cakephp(1.3) - 在视图中访问会话变量

时间:2010-08-05 14:21:35

标签: cakephp cakephp-1.3

如果我在我的page.ctp中执行了print_r($ _ SESSION),我得到:

Array
(
    [Config] => Array
        (
            [userAgent] => b3346028c15f82ac5d4b25c4f50d8718
            [time] => 1281034201
            [timeout] => 100
        )

    [manualLogout] => 1
    [Message] => Array
        (
        )

    [Auth] => Array
        (
            [redirect] => /events/add/controller:events
        )

    [facebookSynced] => 1
)

var facebookSynced我在我的控制器中设置了$ this-> Session-write() - 并且它在会话中按预期进行。但当我从page.ctp做pr($ this-> Session)或pr($ session)时,我得到:

SessionHelper Object
(
    [helpers] => Array
        (
        )

    [__active] => 1
    [valid] => 
    [error] => 
    [_userAgent] => b3346028c15f82ac5d4b25c4f50d8718
    [path] => /
    [lastError] => 
    [security] => medium
    [time] => 1281016202
    [sessionTime] => 1281034202
    [watchKeys] => Array
        (
        )

    [id] => 
    [host] => 
    [timeout] => 
    [base] => /Eclipse/Calc_1.3.2/trunk
    [webroot] => /Eclipse/Calc_1.3.2/trunk/
    [here] => /Eclipse/Calc_1.3.2/trunk/users/login
    [params] => Array
        (
            [controller] => users
            [action] => login
            [named] => Array
                (
                )

            [pass] => Array
                (
                )

            [plugin] => 
            [form] => Array
                (
                )

            [url] => Array
                (
                    [url] => users/login
                )

            [models] => Array
                (
                    [0] => User
                )

        )

    [action] => login
    [data] => 
    [theme] => 
    [plugin] => 
)

如何使用facebookSynced var访问我的会话,这两个'会话'之间的区别是什么。额外信息:在core.php中我有:

Configure::write('Session.save', 'php');
Configure::write('Session.cookie', 'CAKEPHP');
Configure::write('Session.save', 'custom_sesh');
Configure::write('Session.timeout', '180');
Configure::write('Session.checkAgent', true);
Configure::write('Session.start', true);

custom_sesh的内容只有一行:

ini_set('session.cookie_lifetime', 0);

3 个答案:

答案 0 :(得分:3)

print_r($ _ SESSION)的第一个结果是实际会话变量的值列表。

pr($ this-> Session)的第二个结果显示了CakePHP的Session帮助对象的内容。

两者都完全不同。如果您想访问会话变量 facebookSynced 的值,您可能希望执行以下操作:

$foo = $_SESSION["facebookSynced"];

答案 1 :(得分:2)

在您的视图中,您应该使用会话助手。

echo $session->read('Key.value');

您在控制器中写过的内容

$this->Session->write('Key.value','example');

答案 2 :(得分:0)

如果您正在使用

$this->Session->write('facebookSynced',true);

在你的控制器中,

只需使用

$foo = $this->Session->read('facebookSynced'); 

在视图中。

就这么简单! :)