我正在使用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中显示数据,并且能够搜索
我希望你们理解我的问题。让我知道我能做什么
谢谢
答案 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'],
];
}