Использование переменных сеанса внутри модели с cakephp - PullRequest
0 голосов
/ 03 июня 2011

Не удается найти четкий ответ на казалось бы простой вопрос.

Я извлекаю даты из базы данных, используя find ().У меня есть смещение часового пояса пользователя (-5, -6 и т. Д.) В переменных сеанса (предоставляется аутентификацией).Я хочу использовать функцию обратного вызова afterFind () для обновления времени в соответствии с часовым поясом пользователя перед отображением, а затем функцию обратного вызова beforeSave () для корректировки времени по Гринвичу при его повторном сохранении.

Как получить доступ к Authпеременные внутри функции afterFind в модели?

Спасибо!

1 Ответ

5 голосов
/ 03 июня 2011

Поскольку Auth-Component является расширением контроллера, нет «естественного» способа вставить это в вашу модель.

Вы можете сделать App::import('Controller', 'Users') или где бы вы это ни делали.

Вы можете увидеть, как вы можете использовать эту функцию здесь: Using App :: import

Но я действительно думаю, что, поскольку это всего лишь вопрос отображения некоторой информации, помощник будет лучшим решением для вашей проблемы (для обслуживания "V" в MVC).

Вы можете написать помощника, который берет вашу дату (я думаю, вы используете DATE или DATETIME в вашей базе данных) и конвертирует ее в правильный часовой пояс.

function convert_timezone($time)
    $timezone = $this->Session->read('Auth.timezone');
    date_default_timezone_set($timezone); //set the correct timezone which we read from the Session
    return gmdate("M d Y H:i:s", strtotime($time)); //using strtotime to convert the time from the database to a timestamp
}

Пожалуйста, ознакомьтесь с этими информационными ссылками о том, как написать свой собственный помощник, функцию gmdate и Session Helper из CakePHP.

Методы работы сессионного помощника

Написание собственных помощников

PHP-функция gmdate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...