yii2 模板twig中使用GridView::widget

时间:2023-07-25 20:04:13

yii框架twig模板中使用GridView::widget 需要这样写:

{{ grid_view_widget({
'dataProvider': provider,
'columns': [
'id',
{'attribute' : 'create_user_id', 'label' : '用户ID'},
{'attribute' : 'category_id','value':ticketCategory, 'label' : '问题分类'},
{'attribute' : 'language', 'value':languageAction, 'label' : '语言'}, //languageAction为需要单独处理的数据,模板不支持PHP语法,需要从控制器返回
{'attribute' : 'support_user_id','value':supportUser, 'label' : '受理人'},
{
'attribute': 'create_time',
'format':['datetime', 'yyyy-MM-dd HH:mm:ss'],
'label': ' 创建时间',
},
{
'attribute': 'update_time',
'format':['datetime', 'yyyy-MM-dd HH:mm:ss'],
'label': ' 更新时间',
},
{
'attribute': 'response_time',
'value':responseTime,
'label': ' 响应时间(分)',
},
{'label':'操作', 'value':actionFunction, 'format':'raw'},
]
}) }}

  

  模板里面不支付PHP写法,比如language字段value值数据库存入标识,而前台页面需要显示对应表示的内容,可以在控制器层将数据处理好,以变量的方式发送到前端页面:

$languageAction = function ($model)
{
switch ($model->language)
{
case Ticket::LANGUAGE_ZH :
return $model->language = '中文';
case Ticket::LANGUAGE_EN :
return $model->language = '英文';
case Ticket::LANGUAGE_OTHER :
return $model->language = '其他';
}
};

return $this->controller->render('index',['provider' => $data,'languageAction' => $languageAction]);