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”。
谁能帮我?
嗯,这听起来很简单 - 您只需将查询数据与预定义数据合并:
$dataProvider = $searchModel->search(\yii\helpers\ArrayHelper::merge(
Yii::$app->request->queryParams,
[$searchModel->formName() => ['is_cod_candidato' => $candidateId]]
));
Run Code Online (Sandbox Code Playgroud)
如果您将预定义数据作为第一个参数,它可能会根据用户请求重新定义。