Perfetto, me ne sono tirato fuori con un paio di modifiche…
Ho aggiunto una nuova funzione nella UserQuery (che estende ActiveQuery):
public function byRefer($refer)
{
$this->andWhere(['refer' => $refer]);
return $this;
}
Dopo ho modificato la UserSearch (che estende User) copiando la funzione originale Search in SearchByRefer con il parametro aggiuntivo Refer sul quale passare l’id dell’utente attualmente loggato:
public function search($params)
{
$query = User::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
......
return $dataProvider;
}
public function searchByRefer($params, $refer)
{
$query = User::find()->byRefer($refer);
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
......
return $dataProvider;
}
E infine nel controller come suggerito da Ventoh, ho modificato il $dataProvider:
public function actionIndex()
{
$searchModel = new UserSearch();
//$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
$dataProvider = $searchModel->searchByRefer(Yii::$app->request->queryParams, \Yii::$app->user->identity->id);
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}
Non sò se sia la soluzione più corretta, magari tralascio qualcosa premettendo che sono un neofita di Yii. Se dovete sgridarmi, fate pure
In ogni caso, grazie mille del supporto
Piccolo edit… ho aggiunto il controllo RBAC per visualizzare o meno tutti gli utenti
public function actionIndex()
{
$searchModel = new UserSearch();
if (Yii::$app->user->can('handleAllUsers')) {
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
} else {
$dataProvider = $searchModel->searchByRefer(Yii::$app->request->queryParams, \Yii::$app->user->identity->id);
}
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
]);
}