在我的应用程序中有一个默认时区。每个用户都有自己的时区。我想设置存储在数据库中的用户时区。
如何根据Bootstrap文件中的用户设置时区。
提前致谢...
class Crm_Bootstrap extends Zend_Application_Module_Bootstrap {
protected function _initTimezone()
{
$userObj = new Application_Model_DbTable_Users();
require_once('Zend/Session.php');
$session = new Zend_Session_Namespace('logincred');
$userdetails = $userObj->userdetails($session->user);
date_default_timezone_set($userdetails[0][id]);
}
}
答案 0 :(得分:0)
创建initTimezone()引导程序方法,从数据库中检索用户/会话的时区并设置时区,如果用户未登录,则设置默认时区。
答案 1 :(得分:0)
您还需要在用户和引导程序的登录方法中执行此操作,否则在成功登录后的初始页面视图将具有不正确的时区。
public function login($username, $password) {
// .. login code ..
// .. login successful ..
date_default_timezone_set($user->timezone);
}
答案 2 :(得分:0)
我使用doctrine2 + Symbony 检查数据库中的用户名行。
$userRepo = $em->getRepository('modules\user\models\Users')->find($userId);
获取数据库中的时区并将值放在函数
中$timezone = $userRepo->timezone;
date_default_timezone_set($timezone);
代码是
class Crm_Bootstrap extends Zend_Application_Module_Bootstrap {
public function init()
{
$em = $this->getEntityManager('user');
@$userId = Zend_Auth::getInstance()->getIdentity()->id;
$userManager = new UsersManager();
if ($userId) {
$userRepo = $em->getRepository('modules\user\models\Users')->find($userId);
date_default_timezone_set($userRepo->timezone);
}
}
}
在db表中创建时区字段