在引导文件中设置时区


Set timezone in Bootstrap file

在我的应用程序中有一个默认时区。每个用户都有自己的时区。我想设置存储在数据库中的用户时区。

如何在Bootstrap文件中根据用户设置时区。

Thanks in advance…

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]);
    }
}

创建initTimezone() bootstrap方法,从数据库中检索用户/会话的时区并设置时区,如果用户未登录,则设置默认时区

您还需要在用户的登录方法以及引导程序中这样做,否则他们成功登录后的初始pageview将具有不正确的时区。

public function login($username, $password) {
    // .. login code ..
    // .. login successful ..
    date_default_timezone_set($user->timezone);
}

我使用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表中创建时区字段