在我的应用程序中有一个默认时区。每个用户都有自己的时区。我想设置存储在数据库中的用户时区。
如何在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表中创建时区字段