【问题标题】:Yii2 - Use two submit buttons for different controllersYii2 - 为不同的控制器使用两个提交按钮
【发布时间】:2023-03-06 00:32:01
【问题描述】:

我想在我的表单中创建两个提交按钮。第一个按钮(我使用Html::submitButton)链接到控制器重定向到索引中的actionCreate。我想将第二个按钮重定向到它的表单,但它不起作用。这是我的第二个按钮:

<?= Html::a('<span class="glyphicon glyphicon-floppy-disk"></span>  Save', ['simpan'], ['class' => 'btn btn-primary']) ?>

这是我在控制器中的 actionSimpan

public function actionSimpan()
{
    $model = new Armada();

    if ($model->load(Yii::$app->request->post())) {
        // get the instance of the uploaded file 
        $imageName = $model->NAMA_ARMADA; 
        $model->photo = UploadedFile::getInstance($model,'photo');
        $model->photo->saveAs('uploads/'.$imageName.'.'.$model->photo->extension);

        //save the path in the column 
        $model->IMG_ARMADA = 'uploads/'.$imageName.'.'.$model->photo->extension; 
        $model->save();

        return $this->redirect(['index']);
    }

    return $this->render('create', [
        'model' => $model,
    ]);
}

我尝试了Html::submitInput,但它不起作用。我应该怎么做才能让它工作?谢谢!

【问题讨论】:

    标签: php button input yii2 submit


    【解决方案1】:

    您只需将data-method="post" 添加到您的锚点,它将自动提交表单,无需添加任何javascript。将您的锚定义更改为下面的定义,您将看到它开始要求表单的空输入意味着也触发验证,并在验证后提交。

    <?php
    
    echo Html::a('<span class="glyphicon glyphicon-floppy-disk"></span>  Save', ['simpan'], [
        'class' => 'btn btn-primary',
        'data' => [
            'method' => 'post'
        ]
    ]);
    ?>
    

    【讨论】:

    • 我无法获得名称,您可以看看我的question 相关吗?
    【解决方案2】:

    按钮:

    <?= Html::a('<span class="glyphicon glyphicon-floppy-disk"></span>  Save', ['simpan'], ['class' => 'btn btn-primary', 'id' => 'simpan-submit-btn']) ?>
    

    JS:

    <script>
    $('#simpan-submit-btn').on('click', function(e) {
      e.preventDefault();
      var submitUrl = $(this).attr('href');
    
      var form = $('form').eq(0); // change selector if you need
      form.attr('action', submitUrl);
      form.submit();
    });
    </script>
    

    【讨论】:

    • 它不起作用。表单刚刚刷新并没有保存任何值。
    • @unicornous 问题是关于将表单发送到另一个操作,所以它是。
    • 我无法获得名称,您可以看看我的question 相关吗?
    【解决方案3】:

    请务必将您的提交按钮放在表单标签内(使用 Html::submitButton)。

    如果这不是问题,请使用以下命令检查模型是否正在保存:

    if (!$model->save()) {
        var_dump($model->getErrors());
        die;
    }
    

    【讨论】:

      【解决方案4】:

      最简单的方法是将参数传递给提交链接:

      <?= Html::a(Yii::t('common', 'Export to XLSX'), Url::toRoute(['xlsx-export']), [
                  'class' => ['btn', 'btn-info', 'btn-sm'],
                  'data' => [
                      'method' => 'get',
                      'params' => \yii\helpers\ArrayHelper::toArray($modelSearch),
                  ]
          ]); ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-31
        • 1970-01-01
        相关资源
        最近更新 更多