cakephp (1.3) - доступ к переменным сеанса в представлениях - PullRequest
1 голос
/ 05 августа 2010

Если я выполняю print_r ($ _ SESSION) в моем page.ctp, я получаю:

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

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

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

    [facebookSynced] => 1
)

переменную facebookSynced, которую я установил в своем контроллере с помощью $ this-> Session-write () - и тамэто в сессии, как и ожидалось.Но когда я выполняю pr ($ this-> Session) или pr ($ session) из page.ctp, я получаю:

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 ив чем разница между этими двумя «сессиями».Дополнительная информация: в 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 ]

3 голосов
/ 05 августа 2010

Первый результат print_r ($ _ SESSION) представляет собой список значений фактической переменной сеанса.

Второй результат из pr ($ this-> Session) показывает содержимое вспомогательного объекта CakePHP Session.

Обе вещи совершенно разные. Если вы хотите получить доступ к значению вашей переменной сеанса facebookSynced , вы, вероятно, захотите сделать что-то вроде:

$foo = $_SESSION["facebookSynced"];
2 голосов
/ 05 августа 2010

По вашему мнению, вы должны использовать Session helper.

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

Где вы написали что-то вроде, в вашем контроллере,

$this->Session->write('Key.value','example');
0 голосов
/ 26 апреля 2011

, если вы используете

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

в вашем контроллере,

просто используйте

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

в представлении.

так просто, кактот !:)

...