簡體   English   中英

帶有 Pjax 的 Yii2 動作

[英]Yii2 action with Pjax

在我的 yii2 應用程序中,我有一個帶有自定義操作的 gridview:

<?php Pjax::begin(); ?>
<?= GridView::widget([
    'dataProvider' => $data,
    'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            [
                'label' => 'Id Article',
                'value' => 'article.id',
            ],
            [
                'label' => 'Article Code',
                'value' => 'article.code',
            ],
            [
                'label' => 'Article Price',
                'value' => 'article.price',
            ],
            [
                'label' => 'Quantity',
                'value' => 'quantity',
            ],
            [
             'class' => 'yii\grid\ActionColumn',
             'template' => '{delete}',
             'urlCreator' => function ($action, $model, $key) {
                    if ($action === 'delete') {
                         return \yii\helpers\Url::toRoute(['estimate/delete-article', 'id_estimate_article' => $model->id]);
                    }
                }
            ], 

            ]
])  
?>
<?php Pjax::end(); ?>

正如您所看到的,我正在用 Pjax 包裝我的 gridview 以處理 Ajax 響應。

這是我的控制器中的刪除文章操作:

public function actionDeleteArticle($id_estimate_article)
{
    $estimateArticle = EstimateArticle::findOne(['id' => $id_estimate_article]);    
    $id_estimate_head = $estimateArticle->estimate->id;
    $estimateAccessories = $estimateArticle->estimateAccessories;
    foreach ($estimateAccessories as $estimateAccessory) {
        $estimateAccessory->delete();
    }
    $estimateArticle->delete();
    return $this->redirect($this->redirect(\yii\helpers\Url::toRoute(['add-informations', 'id_estimate_head' => $id_estimate_head])));
}

代碼有效,但頁面每次刷新(所以 Pjax 沒有做的是工作)。 這是我第一次使用 Pjax。

我哪里錯了? 提前感謝所有幫助

您可以嘗試使用此代碼解決 Pjax 重新加載問題。

<?php Pjax::begin(); ?>
<?= GridView::widget([
    'dataProvider' => $data,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        [
            'label' => 'Id Article',
            'value' => 'article.id',
        ],
        [
            'label' => 'Article Code',
            'value' => 'article.code',
        ],
        [
            'label' => 'Article Price',
            'value' => 'article.price',
        ],
        [
            'label' => 'Quantity',
            'value' => 'quantity',
        ],
        [
            'class' => 'yii\grid\ActionColumn',
            'header' => 'Action',
            'template' => '{delete}',
            'buttons' => [
                'delete' => function ($url, $model, $key) {
                    return Html::a('Delete', yii\helpers\Url::to(['estimate/delete-article', 'id_estimate_article' => $model->id]), [
                        'class' => '',
                        'data' => [
                            'confirm' => 'Are you sure want to delete records?',
                            'method' => 'post',
                        ],
                    ]);
                }
            ]        
        ],

    ]
])
?>

我希望它會幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM