gpt4 book ai didi

php - Yii2 Gridview 使用自定义标签进行排序和过滤

转载 作者:行者123 更新时间:2023-12-04 03:15:13 25 4
gpt4 key购买 nike

在我的用户表中,我有名字和姓氏之类的字段。然后我使用 Gii 生成了一个 View 。在我的索引页面中,现在我有名字、姓氏、用户名等....

我将名字和姓氏连接起来作为姓名。

[
'attribute'=>'firstname',
'label' => 'Name',
'format' => 'raw',
'value' => function ($data) {
return Html::a($data->Name);
},
],

模型

public function getName()
{
return $this->firstname.' '.$this->lastname;
}

不幸的是,我无法搜索带有姓氏的名称字段...我需要用名字和姓氏过滤字段。
谁能帮帮我....
提前致谢。

最佳答案

这就是你设置搜索模型的方式(我没有包括你的其他列,所以不要忘记那些)

您可以在这里找到更多信息:http://www.yiiframework.com/wiki/621/filter-sort-by-calculated-related-fields-in-gridview-yii-2-0/

class UserSearch extends User
{
public $name;

public function rules()
{
return [
[['name'], 'safe'],
// some other rules ...
];
}

public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}

public function search($params)
{
$query = User::find();

$dataProvider = new ActiveDataProvider([
'query' => $query,
]);

$dataProvider->sort->attributes['name'] = [
'asc' => ['lastname' => SORT_ASC, 'firstname' => SORT_ASC],
'desc' => ['lastname' => SORT_DESC, 'firstname' => SORT_DESC],
'label' => 'Name',
'default' => SORT_ASC
];

$this->load($params);

if (!$this->validate()) {
// uncomment the following line if you do not want to return any records when validation fails
// $query->where('0=1');
return $dataProvider;
}

// grid filtering conditions

// some other filters ...
$query->andFilterWhere([
'or',
['like', 'lastname', $this->name],
['like', 'firstname', $this->name],
]);

return $dataProvider;
}
}

并且在你的 gridview 而不是

[
'attribute'=>'firstname',
// ...
],

只是使用

[
'attribute'=>'name',
],

关于php - Yii2 Gridview 使用自定义标签进行排序和过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41690079/

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