格式化文本编辑器数据以在Gridview Yii2

时间:2015-09-25 00:50:17

标签: gridview yii2 yii2-advanced-app

我正在使用yii2 gridview, 我有一个名为description的字段,其中包含所有带样式和格式的丰富html文本。

现在我知道如何在gridview中显示这些数据,我也可以限制在该列的网格中显示的字符

但我现在有2个问题

1)我在value属性中使用了truncate数据中的函数,因此我失去了从描述中搜索的能力。那么我怎样才能truncate发短信并且能够在该列中进行搜索 这是我用过的代码

[
    'format' => 'html',
    'label' => 'Description',
    'value' => function ($dataProvider) {
        $url = $dataProvider->description;
        return BaseStringHelper::truncateWords($url,30,null,true);
    },
],

2)这确实解决了主要问题,但在使用该方法后,我在gridview列中显示图像时遇到问题。我想从img数据修剪description标记,并在gridview中显示数据,并且能够搜索

我希望你们理解我的问题。让我知道我能做什么

谢谢

1 个答案:

答案 0 :(得分:1)

1)你只能在数据库表中创建一个额外的数据列,然后执行:

$formattedDesc = BaseStringHelper::truncateWords($url,30,null,true);
$model->formattedDescription = $formattedDesc;

将数据导入数据库时​​,要获取数据。 这通常会将该单元格中的数据显示在gridView中。

///

能够再次搜索,只需添加

'attribute' => 'your column name',

您可能需要将新属性绑定到搜索模型

  ->andFilterWhere(['like or = /// etc.','columnt that you want to search   in//',
$this->getAttribute('attribute name')]);

/ *请注意,将使用来自" db列"的数据进行搜索,并显示该数据库列数据(使用您的格式化值)

要向搜索模型添加自定义属性,请执行以下操作:

public function attributes() {
    return array_merge(parent::attributes(), ['customAttribute']);
}

public function rules(){
    return [
           [['customAttribute'], 'safe'],
           ];
 }