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 == '却下') {
        // 却下
    }
}
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です