【问题标题】:Changing column name in yii cgridview based on database value根据数据库值更改 yii cgridview 中的列名
【发布时间】:2014-07-22 05:45:41
【问题描述】:

我陷入了必须根据数据库值更改列标题的情况。例如,如果数据库值为 1,则列名应为“Kick Off”,如果为 2,则列名应为“Tip Off”。我使用了以下代码,但它不起作用。

array(
    'name' => 'date', 
    'header' => '($data->league_id==1) ? "Kick Off" : "Tip Off"',
    'type' => 'raw',
    'value' => 'strtoupper(date("D M d", strtotime($data->date)))',
),

【问题讨论】:

    标签: php yii cgridview


    【解决方案1】:

    如果您看到CDataColumn(如果您使用数组来指定属性,则默认为),标头值是一个字符串,不会作为 PHP 表达式计算。

    如果您查看 CDataColumn 的 renderHeaderCellContent() 方法,您会注意到它使用了模型中的属性名称。

    $this->grid->dataProvider->model->getAttributeLabel($this->name)
    

    所以我认为将它放在您的模型中没有任何问题,这是它最初应该属于的位置:

    public function attributeLabels() {
        return array(
            'date' => '($this->league_id == 1) ? "Kick Off" : "Tip Off"',
            ...
    

    【讨论】:

    • 我试过了,但是 $this->league_id 是空的,所以它总是返回“Tip Off”。我还尝试了其他属性,例如 $this->id 进行比较,但它也是空的。我不知道为什么不应该这样。
    • 该模型与其他模型有关系,但league_id 属性位于同一个表中。比赛日程表有日期和时间的不同联赛的比赛日程。在显示某些联赛的时间表时,我需要显示球队名称以及开始日期和时间。我需要根据联赛 ID 更改(日期)标题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多