Yii2 Comment créer correctement colonne de cases à cocher dans gridview pour des actions groupées?

J'ai besoin de créer des "actions groupées" similaire à wordpress postes de gestion, de sorte que vous pouvez par exemple supprimer plusieurs enregistrements à la fois.

C'est mon approche, et fonctionne bien, mais je suis sûr que ce n'est pas la meilleure approche, car cette méthode est vulnérable à CSRF hacks.

Colonne de cases à cocher dans un gridview:

GridView::widget([
'dataProvider' => $dataProvider,    
'columns' => [
['class' => 'yii\grid\CheckboxColumn'],
'id'=>'grid',
'country',
],
]); 

Bouton qui déclenche une fonction

<a href="#" onclick="bulkAction('p');">

La fonction:

<script>
    function bulkAction(a) {
        var keys = $('#grid').yiiGridView('getSelectedRows');
        window.location.href='<?php echo Url::to(['mycontroller/bulk']); ?>&action='+a+'&ids='+keys.join();
    }
</script>

Cette fonction crée une url comme ceci:

index.php?r=mycontroller/bulk&action=1&ids=2,6,7,8

PROBLÈME EST
Cette approche est vulnérable à CSRF hacks (expliqué ici: http://blog.codinghorror.com/cross-site-request-forgeries-and-you/)

Alors, quelle est la BONNE façon de le faire?

J'ai répondu à la même question ici: stackoverflow.com/questions/27397588/...

OriginalL'auteur lalo | 2015-03-11