- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我目前正在开发一个 Web 应用程序,它允许我在执行期间更改时区。我开始测试一些案例,但不幸的是它不适用于 CGridView。
此处的代码适用于更改时区。我用 setTimeZone()函数是 date_default_timezone_set() 的包装器功能。
Yii::app()->setTimeZone("America/Montreal");
echo "mtl:".date("Y-m-d H:i", 1396624849)."<br>";
Yii::app()->setTimeZone("Asia/Gaza");
echo "gz:".date("Y-m-d H:i", 1396624849);
输出很有意义(mtl:2014-04-04 11:20
,gz:2014-04-04 18:20
)。
当我尝试使用 CGridView 在 View 中使用完全相同的行时,它不起作用并且仅显示我的默认日期格式。这是代码:
Yii::app()->setTimeZone("Asia/Gaza");
echo Yii::app()->getTimeZone();
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'reports-grid',
'dataProvider'=>$dataProvider,
'filter'=>$filtersForm,
'columns'=>array(
array(
'header'=>'Date',
'name'=>'inserted',
'type'=>'raw',
'value'=>'date(Yii::app()->params->dateformat, strtotime($data->inserted));'
),
),
));
即使我更改 America/Montreal
的时区,输出日期也保持不变。
将 setTimeZone() 函数添加到具有日期定义的函数中,如下所示:
'value'=>function($data){
Yii::app()->setTimeZone("America/Montreal");
return date(Yii::app()->params->dateformat, strtotime($data->inserted));
}
结果和之前一样。
为什么它不起作用?有没有办法在 Yii 中动态更改时区?有没有可能因为 CGridView 是用 eval 操作构建的,所以它不起作用?
最佳答案
试试这个,它应该工作。
$dateTime = new DateTime();
$dateTime->setTimezone(new DateTimeZone('Asia/Gaza'));
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'reports-grid',
'dataProvider'=>$dataProvider,
'filter'=>$filtersForm,
'columns'=>array(
array(
'header'=>'Date',
'name'=>'inserted',
'type'=>'raw',
'value'=>function($data) use ($dateTime){
$dateTime->setTimestamp(strtotime($data->inserted));
return $dateTime->format(Yii::app()->params->dateformat);
}
))
));
通过在函数外部设置时区并在函数内部使用它,应该一切正常。
关于php - 更改 CGridView 的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867019/
我正在使用 yii-booster(4.0.1) TbGridView(extends CGridView) 并且需要更改 _REQUEST($_POST, $_GET) 中的过滤器变量名称以实现过滤
我的数据库中有 3 个表, 图片如下,我已关注 http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-
在我的项目中,我使用 cgridview 来显示一些信息并使用使用 cgrid View 构建的分页。但现在我正面临分页的可用性问题。也就是说,考虑我有 3 页,分页看起来像 >> . 当我点击第三
我在 Controller 的索引操作中有这些代码: public function actionIndex() { $cid = @$_GET['cid']; $country = Coun
听起来很简单,对吧?我搜索了高低,我不知道如何做到这一点。我有一个 CGridView: $dataProvider = new CArrayDataProvider ($auctions); $th
我希望删除按钮仅在 CGgridView 中的特定条件下处于事件状态CButtonColumn (或制作自定义删除按钮)例如,如果 user=='admin'或 status=='draft' .有任
我想设置一个 CGridView。我希望在一个 View 中显示来自 2 个不同表的数据。数据来自一个名为 student 的表和另一个名为 employee 的表。 员工由学生推荐(reg_no)
默认情况下,删除按钮将自己分配给此功能: jQuery('#main-orders-details-grid a.delete').live('click',function() { if(!
我有两个关系表:location 和 location_types。 位置 - location_id - location_name - location_type_id Locatio
我正在尝试按category_id过滤gridview中的产品记录 我有三张 table ProductMst(product_id,name) CategoryMst(category_id,cat
我有一个CGridView,它在给定模型上调用search(AFAIK)来获取要显示的模型列表。是否可以通过调用 $model->some_method() 的结果对所述 View 的结果进行排序?
问:如何为我的 gridview 创建过滤器? 状态:客户姓名 = first_name。姓氏 这是我的 GridView widget('zii.widgets.grid.CGridView', a
我需要使用自定义文本字段过滤 CGridView。我有自定义数据提供者(CSqlDataProvider),我返回并用它填充表格。表格很好,但对我来说似乎很痛苦的是过滤它。我已经花了几个小时试图解决这
我正在用 Yii (v1.1.12) 编写我的第一个应用程序,学习曲线对我来说有点陡峭,所以我需要一些帮助。 设想以下表格(及其关系): 详细 (n:1) 文档 文档 (n:1) 用户 用户(n:1)
我已将我的 yii CGridview 的一列作为超链接。但是单击它时,它会在同一选项卡中打开链接地址。如何在新标签页中打开链接地址? array( 'header'=>'Name',
有 enableSorting 标志,如果等于 false,则禁用所有网格列的排序。但是我怎么能只针对一个特定的列做到这一点呢? 最佳答案 试试这个 'sortable'=>false, 这是例子,
我有带分页的简单 Yii cgridview 代码。分页工作正常,但在最后一页我遇到了一个问题。 例如,如果我在 DB 表中有 13 条记录,并将分页设置为每页 10 页,那么对于第一页它将显示 “1
我有一个带有 has_many 关联的模型。 假设学生有很多类(class)。 我想使用 CGridView 显示特定学生的所有类(class)。 像这样的东西: $this->widget('zii
在我的项目中,名为 的模型之一类型 与其他模型有多重关系,部分标准低于其类似 $criteria->with = array( 'category',
如您所知,在 CGridView 中有允许过滤数据的文本框。如何向这些文本框添加类,例如: 最佳答案 取自the forum : $this->widget('zii.widgets.grid.CGr
我是一名优秀的程序员,十分优秀!