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'])) {
    // 却下
}

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

関連コンテンツ

スポンサードリンク

Comment

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