yii2:如何在SerachModel中添加固定过滤器->;搜索(..)


yii2: how to add fixed filter in SerachModel->search(...)

我对Yii很陌生,我面临着一个小问题,我想显示一个已经筛选过的表,并允许使用查询参数字符串进行筛选。

我在控制器中宣布一个新操作

public function actionIndexFiltered($candidateId)
{
    $searchModel = new CvRisorsaTitoloSearch();
    //$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
    $dataProvider = $searchModel->search([$searchModel->formName() => ['is_cod_candidato' => $candidateId]]);
    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

此代码有效,但不允许使用查询参数进行筛选。

"CvRisorsaTitolo"是一个包含其他信息的"多对多"表,"is_cod_candidateto"是"CvRisorsaTitolo"的一个字段。

我如何将我的过滤器和其他文件"Yii::$app->request->queryParams"中的查询参数过滤器结合起来。

有人能帮我吗?

这听起来很简单-您只需将查询数据合并为预定义的数据:

$dataProvider = $searchModel->search('yii'helpers'ArrayHelper::merge(
    Yii::$app->request->queryParams,
    [$searchModel->formName() => ['is_cod_candidato' => $candidateId]]
));

如果您将预定义的数据作为第一个参数,它可能会被用户请求重新定义。