【发布时间】:2018-09-13 14:33:50
【问题描述】:
我的地址控制器:
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',
我在这个dataProvider 中有一个名为name 的属性。我想通过preg_replace()创建一个名为name2 的新虚拟属性name 中的几个部分。
该功能本身正在运行。我尝试了很多不同的东西,但我仍然无法用数据填充属性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);
有效!非常感谢你们!有你在场并提供帮助真是太棒了!!!
【问题讨论】:
-
如何检查 name2 ? ..显示代码..
-
嗨,我已经添加了视图来显示它。
标签: yii2 virtual-attribute csqldataprovider