J'essaie de filtrer des données à l'aide d'une liste déroulante. La requête s'exécute parfaitement et produit un résultat toujours correct, mais dans le résumé, le compte total est toujours égal à 0, mais pas la première fois lorsque la page est chargée. Cela m'ennuie car je ne parviens pas à retracer l'erreur à l'aide de l'outil de débogage.
Mais ce qui est important, c'est que le même code fonctionne bien sur ma machine locale, alors que je l'ai déployé en production et qu'il affiche 0 compte.
Mon code modèle :
public function search($params) {
$query = Tasks::find();
$query->where(['q_id' => $this->job_id]);
// $query->orderBy('created_at DESC');
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 20,
],
]);
$this->load($params);
if (!empty($this->keyword) || $this->keyword != '') {
$query->andWhere('MATCH(task_title,task_description, priority) AGAINST("' . $this->keyword . '*" IN BOOLEAN MODE)');
}
if (is_numeric($this->filterby)) {
$query->andFilterWhere(['status' => $this->filterby]);
} else {
$query->andFilterWhere(['IN', 'status', [10, 4, 2]]);
}
if (!empty($this->sortby) || $this->sortby != '') {
$query->orderBy($this->sortby . ' DESC');
}
return $dataProvider;
}
Voici mon code d'affichage :
<?php
yii\widgets\Pjax::begin(['id' => 'tasks-pjax', 'timeout' => 10000]);
echo \yii\widgets\ListView::widget([
'layout' => '{summary}<br/>{items}{pager}',
'dataProvider' => $dataProvider,
'summary' => '<div class="col-lg-12 hidden-xs"><p class="text-muted text-success"> {totalCount} Tasks Found!</p></div>',
'summaryOptions' => ['style' => 'margin-bottom: 5px;margin-top:5px;', 'tag' => 'span'],
'id' => 'tasks-list',
'itemOptions' => ['class' => 'task-item'],
'emptyText' => 'No Task Found !',
'emptyTextOptions' => ['class' => 'list-group-item', 'style' => 'margin-left: 15px; margin-right:15px; color: red'],
'itemView' => '_tasks',
'pager' => [
'class' => 'kop\y2sp\ScrollPager',
'container' => '#tasks-list',
'item' => '.task-item',
// 'next' => '.next a',
'triggerOffset' => 20,
'noneLeftText' => '',
]
])
?>
<?php yii\widgets\Pjax::end(); ?>
Code du contrôleur :
public function actionIndex() {
$searchModel = new \frontend\models\TasksSearch();
if (Yii::$app->request->get('q_id')) {
$qModel = QPosts::findOne(['q_id' => base64_decode(Yii::$app->request->get('q_id'))]);
$searchModel->q_id = $qModel->q_id;
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
if (Yii::$app->user->identity->id == $qModel->user_id || Yii::$app->user->identity->id == $xxxModel->xxx_id) {
return $this->render('index', [
'searchModel' => $searchModel,
'dataProvider' => $dataProvider,
'qModel' => $qModel,
]);
} else {
return $this->redirect(['xxxx/xxxx', 'id' => $qModel->q_id]);
}
} else {
throw new NotFoundHttpException('The requested page does not exist.');
}
}