Yii2 - 为不同的控制器使用两个提交按钮
Yii2 - Use two submit buttons for different controllers
我想在我的表单中创建两个提交按钮。第一个按钮(我用的是Html::submitButton
)link到Controller中的actionCreate重定向到index。我想将第二个按钮重定向到它的表单,但它不起作用。这是我的第二个按钮:
<?= Html::a('<span class="glyphicon glyphicon-floppy-disk"></span> Save', ['simpan'], ['class' => 'btn btn-primary']) ?>
这是我在 Controller 中的 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
但它不起作用。我应该怎么做才能让它发挥作用?谢谢!
按钮:
<?= 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>
请确保将提交按钮放在表单标签内(使用 Html::submitButton)。
如果这不是问题所在,请使用以下方法检查模型是否正在保存:
if (!$model->save()) {
var_dump($model->getErrors());
die;
}
您只需将data-method="post"
添加到您的锚点,它会自动提交表单,无需添加任何javascript。将您的锚点定义更改为下面的定义,您会看到它开始要求表单的空输入意味着也会触发验证并在验证后提交。
<?php
echo Html::a('<span class="glyphicon glyphicon-floppy-disk"></span> Save', ['simpan'], [
'class' => 'btn btn-primary',
'data' => [
'method' => 'post'
]
]);
?>
最简单的方法是将参数传递给提交 link:
<?= 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),
]
]); ?>
我想在我的表单中创建两个提交按钮。第一个按钮(我用的是Html::submitButton
)link到Controller中的actionCreate重定向到index。我想将第二个按钮重定向到它的表单,但它不起作用。这是我的第二个按钮:
<?= Html::a('<span class="glyphicon glyphicon-floppy-disk"></span> Save', ['simpan'], ['class' => 'btn btn-primary']) ?>
这是我在 Controller 中的 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
但它不起作用。我应该怎么做才能让它发挥作用?谢谢!
按钮:
<?= 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>
请确保将提交按钮放在表单标签内(使用 Html::submitButton)。
如果这不是问题所在,请使用以下方法检查模型是否正在保存:
if (!$model->save()) {
var_dump($model->getErrors());
die;
}
您只需将data-method="post"
添加到您的锚点,它会自动提交表单,无需添加任何javascript。将您的锚点定义更改为下面的定义,您会看到它开始要求表单的空输入意味着也会触发验证并在验证后提交。
<?php
echo Html::a('<span class="glyphicon glyphicon-floppy-disk"></span> Save', ['simpan'], [
'class' => 'btn btn-primary',
'data' => [
'method' => 'post'
]
]);
?>
最简单的方法是将参数传递给提交 link:
<?= 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),
]
]); ?>