我曾使用GridView来显示我的表格。我需要的是,如果数据库表缺失中的字段活动为1,则显示该值,否则不显示该值。 现在这是我的GridView代码
public function actionListfound()
这是我在控制器中使用的,但它不起作用
$searchModel = new \app\models\MissingSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
return $this->render('cir_bookfounds', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
{
{{1}}
}
现在我如何在GridView中显示。
答案 0 :(得分:1)
使用dataProvider
的{{1}}属性中指定的数据模型填充GridView。在您的代码中,这是GridView
。因此,在准备$dataProvider
时需要应用过滤器active=1
。
<强>更新强>
根据您的控制器代码,您应该在$dataProvider
模型的search
函数内设置过滤器。
MissingSearch
更新2
根据您的进一步评论,您对两个页面使用相同的搜索模型 - 但要求在一个页面中,您将显示数据public function search($params)
{
$query = Missing::find()->where(['active' => 1]);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
... //more code
,第二个显示active=0
。这可以通过引入以下更改来实现:
active=1
模型
MissingSearch
您可以从控制器发送public function search($params, $activeFlag = 0)
{
$query = Missing::find()->where(['active' => $activeFlag]);
// add conditions that should always apply here
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
... //more code
的相应值。您发布的控制器代码现在可以写为:
$activeFlag
同样,在您使用public function actionListfound()
{
$active = 1;
$searchModel = new \app\models\MissingSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams, $active);
return $this->render('cir_bookfounds', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
显示数据的其他网页的控制器操作中,只需设置active=0
。