2016-05-10 11 views
1

Ich habe versucht, eine benutzerdefinierte Aktion Spalte im Index zu erstellen und schrieb diesen Code:Yii2 pjax gridview ActionColumn Problem mit Blick Link

 [ 
      'class' => 'yii\grid\ActionColumn', 
      'contentOptions' => ['style' => 'width:50px;'], 
      'header'=>'', 
      'template' => '{view} {update}', 
      'buttons' => 
      [ 

       //view button 
       'view' => function ($url, $model) { 
        return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [ 
           'title' => Yii::t('app', 'View'),        
        ]); 
       }, 
       'update' => function ($url, $model) { 
        if (Yii::$app->user->can('change-offer')) 
        { 
         return Html::a('<span class="glyphicon glyphicon-pencil"></span>', $url, [ 
            'title' => Yii::t('app', 'Update'),        
         ]); 
        } 
       }, 
       'delete' => function ($url, $model) { 
        if (Yii::$app->user->can('delete-offer')) 
        { 
         return Html::a('<span class="glyphicon glyphicon-trash"></span>', $url, [ 
            'title' => Yii::t('app', 'Delete'), 
            'data-confirm' => 'Are you sure you want to delete this item?', 
            'data-method' => 'post', 

         ]); 
        } 
       },           
      ], 
      'urlCreator' => function ($action, $model, $key, $index) { 
       if ($action === 'view') { 
        return Url::to(['offer/view', 'id'=>$model->id]); 
       } 
       if ($action === 'update') { 
        return Url::to(['offer/update', 'id'=>$model->id]); 
       } 
       if ($action === 'delete') { 
        return Url::to(['offer/delete', 'id'=>$model->id]); 
       }      
      } 
     ], 

löschen und aktualisieren arbeiten ok, aber Ansicht öffnet, ohne die Seite zu aktualisieren auf der Indexseite. Ich habe meinen Code wie folgt aktualisiert und die 'data-method' => 'post' hinzugefügt und es scheint zu helfen.

    'view' => function ($url, $model) { 
        return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [ 
           'title' => Yii::t('app', 'View'),  
           'data-method' => 'post', 
        ]); 
       }, 

Ist es ein Fehler in der GridView oder mache ich etwas falsch?

+0

Wenn Sie auf Ansicht Schaltfläche geklickt wird es dauern Seite zu sehen, nicht die Index-Seite aktualisieren. –

+0

Das Öffnen der Ansichtsseite ist was die actionView, wenn Sie Indexseite aktualisieren möchten ... Index abrufen .. – scaisEdge

Antwort

5

Sie können pjax für einen bestimmten Link im Inneren des Behälters zu diesem Link durch Hinzufügen data-pjax="0" Attribut deaktivieren.

Also, sollten Sie einfach versuchen, diese:

return Html::a('<span class="glyphicon glyphicon-eye-open"></span>', $url, [ 
    'title' => Yii::t('app', 'View'),  
    'data-pjax' => '0', 
]); 

Lesen Sie mehr: http://www.yiiframework.com/doc-2.0/yii-widgets-pjax.html

+0

Danke! Es hat auch funktioniert. – TaN3L