gpt4 book ai didi

php - 如何全局使 CGridView 使用 "raw"作为 CDataColumn 的默认类型?

转载 作者:行者123 更新时间:2023-12-02 05:44:16 25 4
gpt4 key购买 nike

Yii 中是否有一个全局设置来改变 "©"的 htmlentity 显示到“©”对于管理员(ajax 网格)/ View /和编辑 View ?

我发现在 CGridView 参数中,我可以将每一列更新为 'type'=>'raw' 如下所示,但我需要在 20 个模型中执行此操作,并且手动查看每个 View ,除非我可以在某个地方进行全局查看。我有一个使用 © 导入数据的脚本,当客户去编辑一个项目时,他们希望看到 ©。提供任何帮助!

<?php $this->widget('zii.widgets.grid.CGridView', array(

'id'=>'item-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,

'columns'=>array(
'id',
'price1',
'price1label',
'price2',
'price2label',
array('name'=>'name','type'=>'raw'), // this will display the raw entity

最佳答案

Yii 中没有内置这样的功能,但通常情况下,您可以扩展几个类来实现目标。

首先,请注意 this是您要更改其默认值的属性。如果您可以¹ 做到这一点,那么所有问题都会迎刃而解。

既然你不能,你需要扩展CDataColumn来实现这个。非常简单:

Yii::import('zii.widgets.grid.CDataColumn');

class SpecialDataColumn extends CDataColumn {
public $type = 'raw'; // that's all!
}

现在的问题是你还需要告诉 Yii 使用你的特殊列类而不是内置的。您可以通过在 CGridView 实例化中指定每一列的 type 来做到这一点,但这是 Not Acceptable ,因为您仍然有需要在每个 View 中编辑每一列的问题。因此,我们必须研究 CGridView 如何决定使用 CDataColumn 并覆盖它。

Grepping 一点显示 this是您需要修改的代码。具体而言,有两方面的兴趣:

$column=$this->createDataColumn($column);

$column['class']='CDataColumn';

因此,您需要覆盖 createDataColumn 方法(以更改第一行的内容)和 initColumns 方法(以编辑第二行)。我们开始吧:

Yii::import('zii.widgets.grid.CGridView');

class SpecialGridView extends CGridView {
protected function initColumns() {
// copy all of the stock implementation code, changing only
// $column['class']='CDataColumn' to $column['class']='SpecialDataColumn'
}

protected function createDataColumn($text)
{
// copy all of the stock implementation code, changing only
// $column=new CDataColumn($this) to $column=new SpecialDataColumn($this)
}
}

完成后,你离幸福只差一步了:

this->widget('SpecialGridView', ...);

您仍然需要在每个使用数据网格的 View 中进行此编辑,但使用查找/替换所需的时间不会超过几秒钟。


¹ 实际上,您可以简单地转到框架源中的那个文件,编辑几个字符,保存,问题就解决了。这种方法的问题是,如果你升级到更高版本的 Yii,你的应用程序将在没有警告的情况下恢复到旧的行为。我不推荐它。

关于php - 如何全局使 CGridView 使用 "raw"作为 CDataColumn 的默认类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com