代码之家  ›  专栏  ›  技术社区  ›  Blackjack

Yii2 Gridview操作按钮中缺少必需参数

  •  1
  • Blackjack  · 技术社区  · 7 年前

    我试图在Yii2 Kartik Gridview中添加我自己的操作按钮。 这是我的自定义按钮: enter image description here

    这是我在index.php中的代码

    [
        'class' => 'yii\grid\ActionColumn',
        'template' => '{edit}',
        'buttons' => [
            'edit' => function ($url, $model) {
             return Html::a('<button type="button" class="btn btn-edit-npwp"><i class="glyphicon glyphicon-plus-sign"></i></button>', $url, [
                 'title' => Yii::t('app', 'Edit'),
                 'data-toggle' => "modal",
                 'data-target' => "#myModal",
                 'data-method' => 'post',
                 ]);
             },
         ],
        'urlCreator' => function ($action, $model, $key, $index) {
           if ($action === 'edit') {
               $url = Url::toRoute(['vatout-faktur-out/add-data', 'id' => $model->fakturId], ['data-method' => 'post',]);
               return $url;
           }
         }
    ],
    

    public function actionAddData($id) {
        $model = new VatoutFakturOut();
        return $this->render('addData', [
                    'model' => $model,
        ]);
    }
    

    我想处理我单击按钮的行中的数据。 但是,这个返回错误

    缺少必需参数:id

    为什么会发生这种情况?如何解决这个问题?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Yupik    7 年前

    在里面 urlCreator if edit ,如果是,则添加param id 到您的按钮url。否则它没有一个,所以有两个解决方案:

    去除 如果

    'urlCreator' => function ($action, $model, $key, $index) {
         $url = Url::toRoute(['vatout-faktur-out/add-data', 'id' => $model->fakturId]);
         return $url;
     }
    

    或删除 $id 从您的 actionAddData()

    public function actionAddData() {
        $model = new VatoutFakturOut();
        return $this->render('addData', [
                    'model' => $model,
        ]);
    }