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

fab*_*bio 1 php search model yii2

我对 Yii 很陌生,我遇到了一个小问题,我想显示一个已经过滤的表,并允许使用查询参数字符串进行过滤。

我在 Controller 中声明了一个新动作

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,
    ]);
}
Run Code Online (Sandbox Code Playgroud)

此代码有效,但它不允许使用查询参数进行过滤。

'CvRisorsaTitolo' 是包含其他信息的“多对多”表,而 'is_cod_candidato' 是 'CvRisorsaTitolo' 的字段。

您好,我可以将我的过滤器和查询参数过滤器结合到其他字段“Yii::$app->request->queryParams”。

谁能帮我?

Pav*_*iev 5

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

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

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