2017-08-31 4 views
0

Je suis en train d'utiliser un GRIDVIEW sur une boîte de dialogue modale, mais quand je cherche quelque chose dans ce (filtrage), tous rafraîchir la page et, évidemment, le modal ferme. de quoi ai-je besoin pour le faire fonctionner correctement?yii2 - utilisation pjax avec un gridview dans une fenêtre modale

mon code:

vue

use yii\widgets\Pjax; 

<?php 
    Modal::begin([ 
     'id' => 'modal', 
     'header' => '<h2>Students</h2>', 
     'toggleButton' => ['label' => 'Show Students'], 
    ]); 
    Pjax::begin(); 
    echo GridView::widget([ 
      'dataProvider' => $dataProvider, 
      'filterModel' => $searchModel, 
      'columns' => [ 
       'student_code', 
       'name', 
       'grade', 
      ], 
     ]); 
    Pjax::end(); 
    Modal::end(); 
?> 

contrôleur

public function actionDetail($id) 
    { 
     $model = $this->findModel($id); 

     $searchModel = new DatosBasicosSearch(); 
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams);  

     if ($model->load(Yii::$app->request->post()) && $model->save()) { 
      return $this->redirect(['view', 'id' => $model->id]); 
     } else { 
      return $this->render('detail', [ 
       'model' => $model, 
       'searchModel' => $searchModel, 
       'dataProvider' => $dataProvider, 
      ]); 
     } 
    } 

J'ai cherché sur la documentation, des tutoriels de la page oficial et je trouve beaucoup de postes liés, mais je ne peut pas résoudre le problème.

Merci pour toute aide.

Répondre

0

Le problème a été causé par la configuration de la méthode de Pjax, la bonne façon est de commencer():

Voir le code:

use yii\widgets\Pjax; 

<?php 
    Modal::begin([ 
     'id' => 'modal', 
     'header' => '<h2>Students</h2>', 
     'toggleButton' => ['label' => 'Show Students'], 
    ]); 

    Pjax::begin([ 
     'id'=>'pjax-students-gridview', 
     'timeout' => false, 
     'enablePushState' => false, 
    ]); 

    echo GridView::widget([ 
      'dataProvider' => $dataProvider, 
      'filterModel' => $searchModel, 
      'columns' => [ 
       'student_code', 
       'name', 
       'grade', 
      ], 
     ]); 

    Pjax::end(); 

    Modal::end(); 
?> 

Le code du contrôleur est le même, il n'y a pas de problème .

Merci à vityapro pour me prendre sur la bonne voie.

0

Essayez d'ajouter la configuration de pjax à GridView

'pjax' => true, 
'pjaxSettings'=>[ 
    'options'=>[ 
     'enablePushState'=>false, 
    ], 
], 

Et créer une action séparée pour votre rendu GridView et le déclenchement du filtre ... et configure filterUrl.

+0

ajoutant que cette configuration GridView je reçois l'erreur suivante: "Unknown propriété - yu \ base \ UnknownPropertyException propriété inconnue Définition: yu \ grid \ GridView :: pjax" –