PHPでどのSubmitボタンが押されたか判定する方法
1つの画面にSubmitボタンが複数設置されている場合に、PHP側でどのSubmitボタンが押されたのか判定する方法です。
下記ソースコードは全てPOST送信を行うサンプルです。
name で判定する
HTML で記述
<button type="submit" name="approve">承認</button>
<button type="submit" name="reject">却下</button>
CakePHP で記述
上記HTMLをCakePHPのFormHelper
を使ってフォーム出力する方法です。
<?= $this->Form->create(null, [
'url' => ['action' => 'checkAction'],
'type' => 'post',
]) ?>
<div>
<?= $this->Form->button('承認', ['type' => 'submit', 'name' => 'approve']); ?>
<?= $this->Form->button('却下', ['type' => 'submit', 'name' => 'reject']); ?>
</div>
<?= $this->Form->end() ?>
PHP側の判定方法
if (isset($_POST['approve'])) {
// 承認
}
if (isset($_POST['reject'])) {
// 却下
}
Laravel で記述
{{ Form::submit('承認', ['name' => 'approve', 'class' => 'btn btn-primary btn-lg']) }}
{{ Form::submit('却下', ['name' => 'reject', 'class' => 'btn btn-primary btn-lg']) }}
コントローラーでの判定方法
if (isset($request->approve)) {
// 承認
}
if (isset($request->reject)) {
// 却下
}
value で判定する
HTML で記述
<button type="submit" name="approve" value="ok">承認</button>
<button type="submit" name="approve" value="ng">却下</button>
CakePHP で記述
<?= $this->Form->create(null, [
'url' => ['action' => 'checkAction'],
'type' => 'post',
]) ?>
<div>
<?= $this->Form->button('承認', ['type' => 'submit', 'name' => 'approve', 'value' => 'ok']); ?>
<?= $this->Form->button('却下', ['type' => 'submit', 'name' => 'approve', 'value' => 'ng']); ?>
</div>
<?= $this->Form->end() ?>
PHP側の判定方法
if (isset($_POST['approve'])) {
if ($_POST['approve'] == 'ok') {
// 承認
}
if ($_POST['approve'] == 'ng') {
// 却下
}
}
Laravel で記述
{{ Form::submit('承認', ['name' => 'approve', 'class' => 'btn btn-primary btn-lg']) }}
{{ Form::submit('却下', ['name' => 'approve', 'class' => 'btn btn-primary btn-lg']) }}
コントローラーでの判定方法
if (isset($request->approve)) {
if ($request->approve == '承認') {
// 承認
}
if ($request->approve == '却下') {
// 却下
}
}