スポンサーリンク

[CakePHP3] 同一フォームに複数のsubmitボタンを設置して、処理を分ける方法

CakePHP

CakePHP3でフォームを作成するときに、「公開する」と「下書き保存」のような複数のボタンを設置して、処理を分けたい場合があります。

色々やり方はありますが、こんな感じでやってます。


Form->button('公開する', ['type' => 'submit', 'name'=>'mode', 'value'=>'publish', 'class' =>'btn btn-primary' ]); ?>
Form->button('下書き保存', ['type' => 'submit', 'name'=>'mode', 'value'=>'draft', 'class' =>'btn btn-info' ]); ?>

「name」オプションに2つとも同一の「mode」という名前を指定しておき、受け渡す値は「value」にセットします。
受け渡し先のコントローラで確認します。


debug($this->request->data['mode']);

例えば、「公開する」ボタンを押下した場合、以下のように表示されます。


\src\Controller\MyApplicationController.php
'publish'

これで「publish」か「draft」かで処理が分けられます。