我正在尝试在来自数据库的ActionColumn按钮上添加ID。我找到了答案,但我似乎没有找到答案。这是我的代码:
<?=
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'ID',
'Job Post',
'Email',
'Date Added',
['class' => 'yii\grid\ActionColumn',
'header'=>'Action',
'template' => '{search}',
'buttons' => [
'search' => function ($model) {
return Html::button('<i class="fa fa-search" aria-hidden="true"></i>', ['value' => $model->ID]);
}
]
],
],
'tableOptions' =>['class' => 'table table-bordered table-hover'],
]);
?>
说实话,我是Yii2的新手。我刚刚在yii2的文档中看到了如何从数据库中显示列表,这就是我提出上述代码的原因。
但是我收到了错误
“试图在非对象上获得财产”
特别是$model->ID
所在的行。
请帮忙。
更新:以下是我从数据库获取数据的方法。我正在使用SqlDataProvider
。
$dataProvider = new SqlDataProvider ([
'sql' => 'SELECT a.user_jobpost Job Post,
b.email Email,
a.user_job_id ID,
a.user_job_date Date Added
FROM users_jobpost a,
user b
WHERE b.id = a.user_id' )];
以下是我使用时显示的内容 var_dump($model)
:
string(55) "/jobposter/backend/web/index.php?r=site%2Fsearch&id=0"
答案 0 :(得分:0)
如果您使用SqlDataProvider,则无法将数据作为对象访问,而是作为数组访问
$model->ID
带
$model['ID']
答案 1 :(得分:0)
我看到你对表格行中的属性感到困惑。您正尝试在列数组
中使用表行的属性instate首先,您需要使用yii的gii工具创建模型类和数据库表的搜索类。让模型的名称是Jobpost.php,搜索是JobpostSearch.php
在模型中,您可以看到在rules()函数的数据库表中定义的表行,以及在attributeLabels()函数中的属性。您可以在model
的attributeLabels()函数中将属性值更改为您想要的值public function rules()
{
return [
[['id'], 'required'],
[['job_post'], 'string'],
[['email'], 'string'],
[['date'], 'safe'],
];
}
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID'),
'job_post' => Yii::t('app', 'Job Post'),
'Email' => Yii::t('app', 'Email'),
'date' => Yii::t('app', 'Date Added'),
];
}
然后创建控制器文件并创建操作
class JobpostController extends Controller
{
public function actionShow()
{
$searchModel = new JobpostSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
}
然后在视图文件夹中创建index.php并编写此代码
GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
'id',
'job_post',
'email',
'date',
['class' => 'yii\grid\ActionColumn',
'header'=>'Action',
'template' => '{search}',
'buttons' => [
'search' => function ($model) {
return Html::button('<i class="fa fa-search" aria-hidden="true"></i>', ['value' => $model->ID]);
}
]
],
],
'tableOptions' =>['class' => 'table table-bordered table-hover'],
]);
注意:列中的值必须与模型jobpost.php
中的规则函数中定义的一样