我的地址控制器:
public function actionIndex() {
$searchModel = new AddressSearch;
$dataProvider = $searchModel->search($_GET);
return $this->render('index', [
'dataProvider' => $dataProvider,
'searchModel' => $searchModel,
]);
}
我的模型地址搜索:
class AddressSearch extends Model {
public function search($params) {
$dataProvider = new SqlDataProvider([
'sql' => '
SELECT
name
FROM...
看法:
GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
'name2',
我有一个name
在 this中调用的属性dataProvider
。我想创建一个新的虚拟属性,调用它name2
的几个部分。该功能本身正在运行。我尝试了很多不同的东西,但我仍然无法用数据填充属性。总是空的。你能指出我正确的方向吗?非常感谢!name
preg_replace()
name2
name2
更新:基于@Imaginaroom 和@rob006 的绝妙想法,我做了以下事情:
- 移动
getName2()
和我填充的属性SqlDataProvider
从基本模型Address
到AddressSearch
- 删除了空的基本模型
Address
,因为无论如何我都不需要它。少即是多! 在
search()
我添加了:foreach ($dataProvider->getModels() as $row) { $model = new AddressSearch; $model->setAttributes($row, false); $models[] = $model; } $dataProvider->setModels($models);
有用!非常感谢你们!你在那里并提供帮助真是太棒了!!!