在Bootstrap文件中设置时区

时间:2011-04-08 11:34:13

标签: php zend-framework zend-framework-mvc

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

如何根据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]);
    }
}

3 个答案:

答案 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表中创建时区字段